• H
    x86, mm: Use a bitfield to mask nuisance get_user() warnings · b390784d
    H. Peter Anvin 提交于
    Even though it is never executed, gcc wants to warn for casting from
    a large integer to a pointer.  Furthermore, using a variable with
    __typeof__() doesn't work because __typeof__ retains storage
    specifiers (const, restrict, volatile).
    
    However, we can declare a bitfield using sizeof(), which is legal
    because sizeof() is a constant expression.  This quiets the warning,
    although the code generated isn't 100% identical from the baseline
    before 96477b4c x86-32: Add support for 64bit get_user():
    
    [x86-mb is baseline, x86-mm is this commit]
    
       text      data        bss     filename
    113716147  15858380   35037184   tip.x86-mb/o.i386-allconfig/vmlinux
    113716145  15858380   35037184   tip.x86-mm/o.i386-allconfig/vmlinux
     12989837   3597944   12255232   tip.x86-mb/o.i386-modconfig/vmlinux
     12989831   3597944   12255232   tip.x86-mm/o.i386-modconfig/vmlinux
      1462784    237608    1401988   tip.x86-mb/o.i386-noconfig/vmlinux
      1462837    237608    1401964   tip.x86-mm/o.i386-noconfig/vmlinux
      7938994    553688    7639040   tip.x86-mb/o.i386-pae/vmlinux
      7943136    557784    7639040   tip.x86-mm/o.i386-pae/vmlinux
      7186126    510572    6574080   tip.x86-mb/o.i386/vmlinux
      7186124    510572    6574080   tip.x86-mm/o.i386/vmlinux
    103747269  33578856   65888256   tip.x86-mb/o.x86_64-allconfig/vmlinux
    103746949  33578856   65888256   tip.x86-mm/o.x86_64-allconfig/vmlinux
     12116695  11035832   20160512   tip.x86-mb/o.x86_64-modconfig/vmlinux
     12116567  11035832   20160512   tip.x86-mm/o.x86_64-modconfig/vmlinux
      1700790    380524     511808   tip.x86-mb/o.x86_64-noconfig/vmlinux
      1700790    380524     511808   tip.x86-mm/o.x86_64-noconfig/vmlinux
     12413612   1133376    1101824   tip.x86-mb/o.x86_64/vmlinux
     12413484   1133376    1101824   tip.x86-mm/o.x86_64/vmlinux
    
    Cc: Jamie Lokier <jamie@shareable.org>
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Russell King <linux@arm.linux.org.uk>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Link: http://lkml.kernel.org/r/20130209110031.GA17833@n2100.arm.linux.org.ukSigned-off-by: NH. Peter Anvin <hpa@zytor.com>
    b390784d
uaccess.h 16.7 KB