|
@@ -604,10 +604,6 @@ static unsigned int usb_device_poll(struct file *file, struct poll_table_struct
|
|
|
lock_kernel();
|
|
|
if (!st) {
|
|
|
st = kmalloc(sizeof(struct usb_device_status), GFP_KERNEL);
|
|
|
- if (!st) {
|
|
|
- unlock_kernel();
|
|
|
- return POLLIN;
|
|
|
- }
|
|
|
|
|
|
/* we may have dropped BKL - need to check for having lost the race */
|
|
|
if (file->private_data) {
|
|
@@ -615,6 +611,11 @@ static unsigned int usb_device_poll(struct file *file, struct poll_table_struct
|
|
|
st = file->private_data;
|
|
|
goto lost_race;
|
|
|
}
|
|
|
+ /* we haven't lost - check for allocation failure now */
|
|
|
+ if (!st) {
|
|
|
+ unlock_kernel();
|
|
|
+ return POLLIN;
|
|
|
+ }
|
|
|
|
|
|
/*
|
|
|
* need to prevent the module from being unloaded, since
|