Whamcloud - gitweb
LU-9116 libcfs: avoid overflow of crypto bandwidth caculation 36/25436/4
authorGu Zheng <gzheng@ddn.com>
Tue, 14 Feb 2017 03:26:11 +0000 (11:26 +0800)
committerOleg Drokin <oleg.drokin@intel.com>
Wed, 1 Mar 2017 05:12:17 +0000 (05:12 +0000)
bcount and buf_len are both int, and no force convert in the caculation code:
tmp = ((bcount * buf_len / jiffies_to_msecs(end - start)) *
1000) / (1024 * 1024);
That may cause overflow in modern fast machine.

Change-Id: I1e5abccad3e4df62907317a09de02beb6d831e13
Signed-off-by: Gu Zheng <gzheng@ddn.com>
Reviewed-on: https://review.whamcloud.com/25436
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Reviewed-by: Emoly Liu <emoly.liu@intel.com>
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: James Simmons <uja.ornl@yahoo.com>
Reviewed-by: Li Xi <lixi@ddn.com>
libcfs/libcfs/linux/linux-crypto.c

index a8c2ccd..1a0a105 100644 (file)
@@ -319,7 +319,8 @@ static void cfs_crypto_performance_test(enum cfs_crypto_hash_alg hash_alg)
        int                     buf_len = max(PAGE_SIZE, 1048576UL);
        void                    *buf;
        unsigned long           start, end;
-       int                     bcount, err = 0;
+       int                     err = 0;
+       unsigned long           bcount;
        struct page             *page;
        unsigned char           hash[CFS_CRYPTO_HASH_DIGESTSIZE_MAX];
        unsigned int            hash_len = sizeof(hash);