• Arjun Sreedharan's avatar
    x86/boot: Standardize strcmp() · 1c1d046b
    Arjun Sreedharan authored
    strcmp() is always expected to return 0 when arguments are equal,
    negative when its first argument @str1 is less than its second argument
    @str2 and a positive value otherwise. Previously strcmp("a", "b")
    returned 1. Now it gives -1, as it is supposed to.
    
    Until now this bug never triggered, because all uses for strcmp() in the
    boot code tested for nonzero:
    
      triton:~/tip> git grep strcmp arch/x86/boot/
      arch/x86/boot/boot.h:int strcmp(const char *str1, const char *str2);
      arch/x86/boot/edd.c:            if (!strcmp(eddarg, "skipmbr") || !strcmp(eddarg, "skip")) {
      arch/x86/boot/edd.c:            else if (!strcmp(eddarg, "off"))
      arch/x86/boot/edd.c:            else if (!strcmp(eddarg, "on"))
    
    should in the future strcmp() be used in a comparative way in the boot
    code, it might have led to (not so subtle) bugs.
    Signed-off-by: default avatarArjun Sreedharan <arjun024@gmail.com>
    Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/1426520267-1803-1-git-send-email-arjun024@gmail.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    1c1d046b
string.c 2.88 KB