diff options
Diffstat (limited to 'fs/zonefs/super.c')
| -rw-r--r-- | fs/zonefs/super.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/fs/zonefs/super.c b/fs/zonefs/super.c index 70be0b3dda49..7e345a6aa551 100644 --- a/fs/zonefs/super.c +++ b/fs/zonefs/super.c @@ -610,10 +610,14 @@ static long zonefs_fname_to_fno(const struct qstr *fname) return c - '0'; for (i = 0, rname = name + len - 1; i < len; i++, rname--) { + long digit; + c = *rname; if (!isdigit(c)) return -ENOENT; - fno += (c - '0') * shift; + digit = (c - '0') * shift; + if (check_add_overflow(fno, digit, &fno)) + return -ENOENT; shift *= 10; } |
