diff --git a/drivers/usb/input/hid-input.c b/drivers/usb/input/hid-input.c
index e071c8eecceea96a64ab2ccb927f9b896e0922e5..63a4db721f7e5d2e3507b29e76d81c60491ab7c7 100644
--- a/drivers/usb/input/hid-input.c
+++ b/drivers/usb/input/hid-input.c
@@ -398,11 +398,12 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
 
 void hidinput_hid_event(struct hid_device *hid, struct hid_field *field, struct hid_usage *usage, __s32 value, struct pt_regs *regs)
 {
-	struct input_dev *input = &field->hidinput->input;
+	struct input_dev *input;
 	int *quirks = &hid->quirks;
 
-	if (!input)
+	if (!field->hidinput)
 		return;
+	input = &field->hidinput->input;
 
 	input_regs(input, regs);