ceph: fix divide-by-zero in __validate_layout()
authorYan, Zheng <zyan@redhat.com>
Tue, 14 Oct 2014 07:38:01 +0000 (15:38 +0800)
committerSage Weil <sage@redhat.com>
Tue, 14 Oct 2014 19:57:05 +0000 (12:57 -0700)
The 'stripe_unit' field is 64 bits, casting it to 32 bits can result zero.

Signed-off-by: Yan, Zheng <zyan@redhat.com>
fs/ceph/ioctl.c

index d7dc812a22494157d4870a594323309ffba59bfd..f851d8d70158ea0aaf3dd87945cc7f256570d58d 100644 (file)
@@ -41,7 +41,7 @@ static long __validate_layout(struct ceph_mds_client *mdsc,
        /* validate striping parameters */
        if ((l->object_size & ~PAGE_MASK) ||
            (l->stripe_unit & ~PAGE_MASK) ||
-           (l->stripe_unit != 0 &&
+           ((unsigned)l->stripe_unit != 0 &&
             ((unsigned)l->object_size % (unsigned)l->stripe_unit)))
                return -EINVAL;