• Ming Lei's avatar
    usb: forbid memory allocation with I/O during bus reset · 4d769def
    Ming Lei authored
    If one storage interface or usb network interface(iSCSI case) exists in
    current configuration, memory allocation with GFP_KERNEL during
    usb_device_reset() might trigger I/O transfer on the storage interface
    itself and cause deadlock because the 'us->dev_mutex' is held in
    .pre_reset() and the storage interface can't do I/O transfer when the
    reset is triggered by other interface, or the error handling can't be
    completed if the reset is triggered by the storage itself (error
    handling path).
    Signed-off-by: default avatarMing Lei <ming.lei@canonical.com>
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: Eric Dumazet <eric.dumazet@gmail.com>
    Cc: David Decotigny <david.decotigny@google.com>
    Cc: Tom Herbert <therbert@google.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Jens Axboe <axboe@kernel.dk>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: Alan Stern <stern@rowland.harvard.edu>
    Cc: Oliver Neukum <oneukum@suse.de>
    Reviewed-by: default avatarJiri Kosina <jkosina@suse.cz>
    Cc: Mel Gorman <mel@csn.ul.ie>
    Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
    Cc: Michal Hocko <mhocko@suse.cz>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
    Cc: Greg KH <greg@kroah.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    4d769def
hub.c 153 KB