• Jack Morgenstein's avatar
    net/mlx4_core: Fix error handling when initializing CQ bufs in the driver · ffe4cfc3
    Jack Morgenstein authored
    Procedure mlx4_init_user_cqes() handles returns by copy_to_user
    incorrectly. copy_to_user() returns the number of bytes not copied.
    Thus, a non-zero return should be treated as a -EFAULT error
    (as is done elsewhere in the kernel). However, mlx4_init_user_cqes()
    error handling simply returns the number of bytes not copied
    (instead of -EFAULT).
    
    Note, though, that this is a harmless bug: procedure mlx4_alloc_cq()
    (which is the only caller of mlx4_init_user_cqes()) treats any
    non-zero return as an error, but that returned error value is processed
    internally, and not passed further up the call stack.
    
    In addition, fixes the following sparse warning:
    warning: incorrect type in argument 1 (different address spaces)
       expected void [noderef] <asn:1>*to
       got void *buf
    
    Fixes: e4567897 ("{net, IB}/mlx4: Initialize CQ buffers in the driver when possible")
    Reported by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: default avatarJack Morgenstein <jackm@dev.mellanox.co.il>
    Signed-off-by: default avatarTariq Toukan <tariqt@mellanox.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    ffe4cfc3
cq.c 13 KB