The patch titled Subject: acct: fix accuracy loss for input value of encode_comp_t() has been added to the -mm mm-nonmm-unstable branch. Its filename is acct-fix-accuracy-loss-for-input-value-of-encode_comp_t.patch This patch will shortly appear at https://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new.git/tree/patches/acct-fix-accuracy-loss-for-input-value-of-encode_comp_t.patch This patch will later appear in the mm-nonmm-unstable branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next via the mm-everything branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm and is updated there every 2-3 working days ------------------------------------------------------ From: Zheng Yejian <zhengyejian1@xxxxxxxxxx> Subject: acct: fix accuracy loss for input value of encode_comp_t() Date: Sat, 15 May 2021 22:06:30 +0800 Patch series "Fix encode_comp_t()". Type conversion in encode_comp_t() may look a bit problematic. This patch (of 2): See calculation of ac_{u,s}time in fill_ac(): > ac->ac_utime = encode_comp_t(nsec_to_AHZ(pacct->ac_utime)); > ac->ac_stime = encode_comp_t(nsec_to_AHZ(pacct->ac_stime)); Return value of nsec_to_AHZ() is always type of 'u64', but it is handled as type of 'unsigned long' in encode_comp_t, and accuracy loss would happen on 32-bit platform when 'unsigned long' value is 32-bit-width. So 'u64' value of encode_comp_t() may look better. Link: https://lkml.kernel.org/r/20210515140631.369106-1-zhengyejian1@xxxxxxxxxx Link: https://lkml.kernel.org/r/20210515140631.369106-2-zhengyejian1@xxxxxxxxxx Signed-off-by: Zheng Yejian <zhengyejian1@xxxxxxxxxx> Cc: Hanjun Guo <guohanjun@xxxxxxxxxx> Cc: Randy Dunlap <rdunlap@xxxxxxxxxxxxx> # build-tested Cc: Vlastimil Babka <vbabka@xxxxxxx> Cc: Zhang Jinhao <zhangjinhao2@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- kernel/acct.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --- a/kernel/acct.c~acct-fix-accuracy-loss-for-input-value-of-encode_comp_t +++ a/kernel/acct.c @@ -320,7 +320,7 @@ void acct_exit_ns(struct pid_namespace * } /* - * encode an unsigned long into a comp_t + * encode an u64 into a comp_t * * This routine has been adopted from the encode_comp_t() function in * the kern_acct.c file of the FreeBSD operating system. The encoding @@ -331,7 +331,7 @@ void acct_exit_ns(struct pid_namespace * #define EXPSIZE 3 /* Base 8 (3 bit) exponent. */ #define MAXFRACT ((1 << MANTSIZE) - 1) /* Maximum fractional value. */ -static comp_t encode_comp_t(unsigned long value) +static comp_t encode_comp_t(u64 value) { int exp, rnd; _ Patches currently in -mm which might be from zhengyejian1@xxxxxxxxxx are acct-fix-accuracy-loss-for-input-value-of-encode_comp_t.patch acct-fix-potential-integer-overflow-in-encode_comp_t.patch