• Michael S. Tsirkin's avatar
    powerpc/uaccess: Allow get_user() with bitwise types · 505e4283
    Michael S. Tsirkin authored
    At the moment, if p and x are both of the same bitwise type
    (eg. __le32), get_user(x, p) produces a sparse warning.
    
    This is because *p is loaded into a long then cast back to typeof(*p).
    
    When typeof(*p) is a bitwise type (which is uncommon), such a cast needs
    __force, otherwise sparse produces a warning.
    
    For non-bitwise types __force should have no effect, and should not hide
    any legitimate errors.
    
    Note that we are casting to typeof(*p) not typeof(x). Even with the
    cast, if x and *p are of different types we should get the warning, so I
    think we are not loosing the ability to detect any actual errors.
    
    virtio would like to use bitwise types with get_user() so fix these
    spurious warnings by adding __force.
    Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
    [mpe: Fill in changelog with more details]
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    505e4283
uaccess.h 12.7 KB