oob = ops->oobbuf;
 
        while(1) {
+               WATCHDOG_RESET();
+
                bytes = min(mtd->writesize - col, readlen);
                aligned = (bytes == mtd->writesize);
 
        page = realpage & chip->pagemask;
 
        while(1) {
+               WATCHDOG_RESET();
                sndcmd = chip->ecc.read_oob(mtd, chip, page, sndcmd);
 
                len = min(len, readlen);
                memset(chip->oob_poi, 0xff, mtd->oobsize);
 
        while(1) {
+               WATCHDOG_RESET();
+
                int bytes = mtd->writesize;
                int cached = writelen > bytes && page != blockmask;
                uint8_t *wbuf = buf;
        instr->state = MTD_ERASING;
 
        while (len) {
+               WATCHDOG_RESET();
                /*
                 * heck if we have a bad block, we do not erase bad blocks !
                 */