diff options
author | Wolfgang Wiedmeyer <wolfgit@wiedmeyer.de> | 2017-09-08 19:23:04 +0200 |
---|---|---|
committer | Wolfgang Wiedmeyer <wolfgit@wiedmeyer.de> | 2017-09-08 19:23:04 +0200 |
commit | 2dc3d0d4086ea7e333d7cb65d940c3f483dbf47c (patch) | |
tree | cdfd3a49a51c06c0bf25c7942f42adb47bd99c89 /fs/isofs/rock.c | |
parent | e3e4496f794cfd3eb379ce67a748cb019fbc2840 (diff) | |
parent | 423532f98b4d3e57e5b59d5140e9c06e83f560a6 (diff) | |
download | kernel_samsung_tuna-replicant-6.0-0002.tar.gz kernel_samsung_tuna-replicant-6.0-0002.tar.bz2 kernel_samsung_tuna-replicant-6.0-0002.zip |
Merge remote-tracking branch 'lineageos/cm-13.0' into replicant-6.0replicant-6.0-0003replicant-6.0-0002
Diffstat (limited to 'fs/isofs/rock.c')
-rw-r--r-- | fs/isofs/rock.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/fs/isofs/rock.c b/fs/isofs/rock.c index f9cd04db6ea..01d3a1696cd 100644 --- a/fs/isofs/rock.c +++ b/fs/isofs/rock.c @@ -30,6 +30,7 @@ struct rock_state { int cont_size; int cont_extent; int cont_offset; + int cont_loops; struct inode *inode; }; @@ -73,6 +74,9 @@ static void init_rock_state(struct rock_state *rs, struct inode *inode) rs->inode = inode; } +/* Maximum number of Rock Ridge continuation entries */ +#define RR_MAX_CE_ENTRIES 32 + /* * Returns 0 if the caller should continue scanning, 1 if the scan must end * and -ve on error. @@ -105,6 +109,8 @@ static int rock_continue(struct rock_state *rs) goto out; } ret = -EIO; + if (++rs->cont_loops >= RR_MAX_CE_ENTRIES) + goto out; bh = sb_bread(rs->inode->i_sb, rs->cont_extent); if (bh) { memcpy(rs->buffer, bh->b_data + rs->cont_offset, |