• Jeff Garzik's avatar
    [PATCH] ISDN: fix drivers, by handling errors thrown by ->readstat() · 04518bfe
    Jeff Garzik authored
    This is a particularly ugly on-failure bug, possibly security, since the
    lack of error handling here is covering up another class of bug: failure to
    handle copy_to_user() return values.
    
    The I4L API function ->readstat() returns an integer, and by looking at
    several existing driver implementations, it is clear that a negative return
    value was meant to indicate an error.
    
    Given that several drivers already return a negative value indicating an
    errno-style error, the current code would blindly accept that [negative]
    value as a valid amount of bytes read.  Obvious damage ensues.
    
    Correcting ->readstat() handling to properly notice errors fixes the
    existing code to work correctly on error, and enables future patches to
    more easily indicate errors during operation.
    Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
    Cc: Karsten Keil <kkeil@suse.de>
    Cc: <stable@kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    04518bfe
isdn_common.c 57.6 KB