diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
index 9197c1b75034b0e85f41e88fff1583a52a1e04da..59f93d2721f3c8bf09ce40679ff32857a9fd4f6c 100644
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
@@ -1057,7 +1057,12 @@ EXPORT_SYMBOL_GPL(hid_output_report);
 
 int hid_set_field(struct hid_field *field, unsigned offset, __s32 value)
 {
-	unsigned size = field->report_size;
+	unsigned size;
+
+	if (!field)
+		return -1;
+
+	size = field->report_size;
 
 	hid_dump_input(field->report->device, field->usage + offset, value);