lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CAK7LNASMrt5F36b8ekdAOB=7U+AXXdVYKYQ4Hhbyzis2db6wdQ@mail.gmail.com>
Date: Mon, 4 Nov 2024 00:00:48 +0900
From: Masahiro Yamada <masahiroy@...nel.org>
To: linux-kbuild@...r.kernel.org
Cc: Greg Kroah-Hartman <gregkh@...e.de>, Hans de Goede <j.w.r.degoede@....nl>, 
	Nathan Chancellor <nathan@...nel.org>, Nicolas Schier <nicolas@...sle.eu>, 
	Rusty Russell <rusty@...tcorp.com.au>, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] modpost: fix input MODULE_DEVICE_TABLE() built for 64-bit
 on 32-bit host

On Sun, Nov 3, 2024 at 9:53 PM Masahiro Yamada <masahiroy@...nel.org> wrote:
>
> When building a 64-bit kernel on a 32-bit build host, incorrect
> input MODULE_ALIAS() entries may be generated.
>
> For example, when compiling a 64-bit kernel with CONFIG_INPUT_MOUSEDEV=m
> on a 64-bit build machine, you will get the correct output:
>
>   $ grep MODULE_ALIAS drivers/input/mousedev.mod.c
>   MODULE_ALIAS("input:b*v*p*e*-e*1,*2,*k*110,*r*0,*1,*a*m*l*s*f*w*");
>   MODULE_ALIAS("input:b*v*p*e*-e*1,*2,*k*r*8,*a*m*l*s*f*w*");
>   MODULE_ALIAS("input:b*v*p*e*-e*1,*3,*k*14A,*r*a*0,*1,*m*l*s*f*w*");
>   MODULE_ALIAS("input:b*v*p*e*-e*1,*3,*k*145,*r*a*0,*1,*18,*1C,*m*l*s*f*w*");
>   MODULE_ALIAS("input:b*v*p*e*-e*1,*3,*k*110,*r*a*0,*1,*m*l*s*f*w*");
>
> However, building the same kernel on a 32-bit machine results in
> incorrect output:
>
>   $ grep MODULE_ALIAS drivers/input/mousedev.mod.c
>   MODULE_ALIAS("input:b*v*p*e*-e*1,*2,*k*110,*130,*r*0,*1,*a*m*l*s*f*w*");
>   MODULE_ALIAS("input:b*v*p*e*-e*1,*2,*k*r*8,*a*m*l*s*f*w*");
>   MODULE_ALIAS("input:b*v*p*e*-e*1,*3,*k*14A,*16A,*r*a*0,*1,*20,*21,*m*l*s*f*w*");
>   MODULE_ALIAS("input:b*v*p*e*-e*1,*3,*k*145,*165,*r*a*0,*1,*18,*1C,*20,*21,*38,*3C,*m*l*s*f*w*");
>   MODULE_ALIAS("input:b*v*p*e*-e*1,*3,*k*110,*130,*r*a*0,*1,*20,*21,*m*l*s*f*w*");
>
> A similar issue occurs with CONFIG_INPUT_JOYDEV=m. On a 64-bit build
> machine, the output is:
>
>   $ grep MODULE_ALIAS drivers/input/joydev.mod.c
>   MODULE_ALIAS("input:b*v*p*e*-e*3,*k*r*a*0,*m*l*s*f*w*");
>   MODULE_ALIAS("input:b*v*p*e*-e*3,*k*r*a*2,*m*l*s*f*w*");
>   MODULE_ALIAS("input:b*v*p*e*-e*3,*k*r*a*8,*m*l*s*f*w*");
>   MODULE_ALIAS("input:b*v*p*e*-e*3,*k*r*a*6,*m*l*s*f*w*");
>   MODULE_ALIAS("input:b*v*p*e*-e*1,*k*120,*r*a*m*l*s*f*w*");
>   MODULE_ALIAS("input:b*v*p*e*-e*1,*k*130,*r*a*m*l*s*f*w*");
>   MODULE_ALIAS("input:b*v*p*e*-e*1,*k*2C0,*r*a*m*l*s*f*w*");
>
> However, on a 32-bit machine, the output is incorrect:
>
>   $ grep MODULE_ALIAS drivers/input/joydev.mod.c
>   MODULE_ALIAS("input:b*v*p*e*-e*3,*k*r*a*0,*20,*m*l*s*f*w*");
>   MODULE_ALIAS("input:b*v*p*e*-e*3,*k*r*a*2,*22,*m*l*s*f*w*");
>   MODULE_ALIAS("input:b*v*p*e*-e*3,*k*r*a*8,*28,*m*l*s*f*w*");
>   MODULE_ALIAS("input:b*v*p*e*-e*3,*k*r*a*6,*26,*m*l*s*f*w*");
>   MODULE_ALIAS("input:b*v*p*e*-e*1,*k*11F,*13F,*r*a*m*l*s*f*w*");
>   MODULE_ALIAS("input:b*v*p*e*-e*1,*k*11F,*13F,*r*a*m*l*s*f*w*");
>   MODULE_ALIAS("input:b*v*p*e*-e*1,*k*2C0,*2E0,*r*a*m*l*s*f*w*");
>
> When building a 64-bit kernel, BITS_PER_LONG is defined as 64. However,
> on a 32-bit build machine, the constant, 1L, has a 32-bit width.
> Left-shifting this constant beyond 32 bits causes wraparound.
>
> The fix in commit e0e92632715f ("[PATCH] PATCH: 1 line 2.6.18 bugfix:
> modpost-64bit-fix.patch") is incorrect; it only addresses cases where
> a 64-bit kernel is built on a 64-bit build machine, overlooking cases
> on a 32-bit build machine.
>
> Using 1ULL ensures a 64-bit width on both 32-bit and 64-bit machines,
> avoiding the wraparound issue.
>
> Fixes: e0e92632715f ("[PATCH] PATCH: 1 line 2.6.18 bugfix: modpost-64bit-fix.patch")
> Signed-off-by: Masahiro Yamada <masahiroy@...nel.org>
> ---


Applied to linux-kbuild/fixes.


-- 
Best Regards
Masahiro Yamada

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ