]> git.baikalelectronics.ru Git - kernel.git/commit
vboxfs: fix broken legacy mount signature checking
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 27 Sep 2021 18:26:21 +0000 (11:26 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 27 Sep 2021 18:26:21 +0000 (11:26 -0700)
commitf19a4d880ac14db08490918b4105cedc8e61a763
tree0ac9631c6219624d356f216b1d0b191b628916fe
parent96e270a0a7164344cbe57bcd65d6a17da9522b83
vboxfs: fix broken legacy mount signature checking

Commit 26ff9c68ed39 ("vboxsf: Fix the check for the old binary
mount-arguments struct") was meant to fix a build error due to sign
mismatch in 'char' and the use of character constants, but it just moved
the error elsewhere, in that on some architectures characters and signed
and on others they are unsigned, and that's just how the C standard
works.

The proper fix is a simple "don't do that then".  The code was just
being silly and odd, and it should never have cared about signed vs
unsigned characters in the first place, since what it is testing is not
four "characters", but four bytes.

And the way to compare four bytes is by using "memcmp()".

Which compilers will know to just turn into a single 32-bit compare with
a constant, as long as you don't have crazy debug options enabled.

Link: https://lore.kernel.org/lkml/20210927094123.576521-1-arnd@kernel.org/
Cc: Arnd Bergmann <arnd@kernel.org>
Cc: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/vboxsf/super.c