diff options
author | Xi Wang <xi.wang@gmail.com> | 2012-02-16 11:56:29 -0500 |
---|---|---|
committer | Alex Elder <elder@dreamhost.com> | 2012-03-22 11:47:45 -0400 |
commit | 80834312a4da1405a9bc788313c67643de6fcb4c (patch) | |
tree | 46fdff81b144f9307a4361f943b7f0fa4d7f1341 /fs/ceph | |
parent | 64486697771cbe219fffcb5c8e2ed9ca4fdf086c (diff) |
ceph: fix overflow check in build_snap_context()
The overflow check for a + n * b should be (n > (ULONG_MAX - a) / b),
rather than (n > ULONG_MAX / b - a).
Signed-off-by: Xi Wang <xi.wang@gmail.com>
Signed-off-by: Sage Weil <sage@newdream.net>
Diffstat (limited to 'fs/ceph')
-rw-r--r-- | fs/ceph/snap.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/ceph/snap.c b/fs/ceph/snap.c index a559c80f127a..f04c0961f993 100644 --- a/fs/ceph/snap.c +++ b/fs/ceph/snap.c | |||
@@ -331,7 +331,7 @@ static int build_snap_context(struct ceph_snap_realm *realm) | |||
331 | 331 | ||
332 | /* alloc new snap context */ | 332 | /* alloc new snap context */ |
333 | err = -ENOMEM; | 333 | err = -ENOMEM; |
334 | if (num > ULONG_MAX / sizeof(u64) - sizeof(*snapc)) | 334 | if (num > (ULONG_MAX - sizeof(*snapc)) / sizeof(u64)) |
335 | goto fail; | 335 | goto fail; |
336 | snapc = kzalloc(sizeof(*snapc) + num*sizeof(u64), GFP_NOFS); | 336 | snapc = kzalloc(sizeof(*snapc) + num*sizeof(u64), GFP_NOFS); |
337 | if (!snapc) | 337 | if (!snapc) |