Ignore:
Timestamp:
Apr 14, 2017, 9:41:36 PM (6 weeks ago)
Author:
brainslayer
Message:

kernel update

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/linux/universal/linux-4.9/drivers/md/dm-verity-fec.c

    r31574 r31859  
    147147                res = fec_decode_rs8(v, fio, block, &par[offset], neras);
    148148                if (res < 0) {
    149                         dm_bufio_release(buf);
    150 
    151149                        r = res;
    152150                        goto error;
     
    173171        r = corrected;
    174172error:
     173        dm_bufio_release(buf);
     174
    175175        if (r < 0 && neras)
    176176                DMERR_LIMIT("%s: FEC %llu: failed to correct: %d",
     
    270270                        /* skip known zero blocks entirely */
    271271                        if (is_zero)
    272                                 continue;
     272                                goto done;
    273273
    274274                        /*
     
    439439        if (!verity_fec_is_enabled(v))
    440440                return -EOPNOTSUPP;
     441
     442        if (fio->level >= DM_VERITY_FEC_MAX_RECURSION) {
     443                DMWARN_LIMIT("%s: FEC: recursion too deep", v->data_dev->name);
     444                return -EIO;
     445        }
     446
     447        fio->level++;
    441448
    442449        if (type == DM_VERITY_BLOCK_TYPE_METADATA)
     
    471478                r = fec_decode_rsb(v, io, fio, rsb, offset, true);
    472479                if (r < 0)
    473                         return r;
     480                        goto done;
    474481        }
    475482
     
    481488        }
    482489
     490done:
     491        fio->level--;
    483492        return r;
    484493}
     
    521530        fio->nbufs = 0;
    522531        fio->output = NULL;
     532        fio->level = 0;
    523533}
    524534
Note: See TracChangeset for help on using the changeset viewer.