diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c
index 444d30e..ee462a0 100644
--- a/drivers/usb/core/message.c
+++ b/drivers/usb/core/message.c
@@ -280,9 +280,9 @@ static void sg_complete(struct urb *urb)
 			&& (io->status != -ECONNRESET
 				|| status != -ECONNRESET)
 			&& urb->actual_length) {
-		dev_err(io->dev->bus->controller,
+		dev_err(io->dev ? io->dev->bus->controller : NULL,
 			"dev %s ep%d%s scatterlist error %d/%d\n",
-			io->dev->devpath,
+			io->dev ? io->dev->devpath : "???",
 			usb_endpoint_num(&urb->ep->desc),
 			usb_urb_dir_in(urb) ? "in" : "out",
 			status, io->status);
