diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c
index d8cf06f186f2e0994a27ad61dcfbcd28afab53d1..3af5e2dd1d82743b1a6d92786401caab7fc8989c 100644
--- a/drivers/usb/core/devio.c
+++ b/drivers/usb/core/devio.c
@@ -286,7 +286,8 @@ static struct async *alloc_async(unsigned int numisoframes)
 static void free_async(struct async *as)
 {
 	put_pid(as->pid);
-	put_cred(as->cred);
+	if (as->cred)
+		put_cred(as->cred);
 	kfree(as->urb->transfer_buffer);
 	kfree(as->urb->setup_packet);
 	usb_free_urb(as->urb);