Fix issue with the sleeping calling hid_hw_request under spinlock.
When i2c is used as HID transport, this is calling kmalloc, which
can sleep. So remove call to this function while under spinlock.
 [ 1067.021961] Call Trace:
 [ 1067.021970]  [<
ffffffff8192f5f2>] dump_stack+0x4d/0x6f
 [ 1067.021976]  [<
ffffffff811109f2>] __might_sleep+0xd2/0xf0
 [ 1067.021981]  [<
ffffffff811ea15b>] __kmalloc+0xeb/0x200
 [ 1067.021989]  [<
ffffffff816e0cb3>] ? hid_alloc_report_buf+0x23/0x30
 [ 1067.021993]  [<
ffffffff816e0cb3>] hid_alloc_report_buf+0x23/0x30
 [ 1067.021997]  [<
ffffffff816f4cb7>] i2c_hid_request+0x57/0x110
 [ 1067.022006]  [<
ffffffffa02bc61c>] sensor_hub_input_attr_get_raw_value+0xbc/0x100 [hid_sensor_hub]
Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
 
        spin_lock_irqsave(&data->lock, flags);
        data->pending.status = true;
+       spin_unlock_irqrestore(&data->lock, flags);
        report = sensor_hub_report(report_id, hsdev->hdev, HID_INPUT_REPORT);
-       if (!report) {
-               spin_unlock_irqrestore(&data->lock, flags);
+       if (!report)
                goto err_free;
-       }
+
        hid_hw_request(hsdev->hdev, report, HID_REQ_GET_REPORT);
-       spin_unlock_irqrestore(&data->lock, flags);
        wait_for_completion_interruptible_timeout(&data->pending.ready, HZ*5);
        switch (data->pending.raw_size) {
        case 1: