• Linus Torvalds's avatar
    vboxfs: fix broken legacy mount signature checking · 9b3b353e
    Linus Torvalds authored
    Commit 9d682ea6 ("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: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    9b3b353e
super.c 11.2 KB