• Andi Kleen's avatar
    kfifo: sanitize *_user error handling · 64ce1037
    Andi Kleen authored
    Right now for kfifo_*_user it's not easily possible to distingush between
    a user copy failing and the FIFO not containing enough data.  The problem
    is that both conditions are multiplexed into the same return code.
    
    Avoid this by moving the "copy length" into a separate output parameter
    and only return 0/-EFAULT in the main return value.
    
    I didn't fully adapt the weird "record" variants, those seem
    to be unused anyways and were rather messy (should they be just removed?)
    
    I would appreciate some double checking if I did all the conversions
    correctly.
    Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
    Cc: Stefani Seibold <stefani@seibold.net>
    Cc: Roland Dreier <rdreier@cisco.com>
    Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Cc: Andy Walls <awalls@radix.net>
    Cc: Vikram Dhillon <dhillonv10@gmail.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    64ce1037
kfifo.c 10.7 KB