Commit 1fd1f285 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid:
  HID: Move dereferences below a NULL test
  HID: hiddev, fix lock imbalance
parents 0dc3d523 76c317d6
...@@ -1075,14 +1075,16 @@ EXPORT_SYMBOL_GPL(hid_report_raw_event); ...@@ -1075,14 +1075,16 @@ EXPORT_SYMBOL_GPL(hid_report_raw_event);
*/ */
int hid_input_report(struct hid_device *hid, int type, u8 *data, int size, int interrupt) int hid_input_report(struct hid_device *hid, int type, u8 *data, int size, int interrupt)
{ {
struct hid_report_enum *report_enum = hid->report_enum + type; struct hid_report_enum *report_enum;
struct hid_driver *hdrv = hid->driver; struct hid_driver *hdrv;
struct hid_report *report; struct hid_report *report;
unsigned int i; unsigned int i;
int ret; int ret;
if (!hid || !hid->driver) if (!hid || !hid->driver)
return -ENODEV; return -ENODEV;
report_enum = hid->report_enum + type;
hdrv = hid->driver;
if (!size) { if (!size) {
dbg_hid("empty report\n"); dbg_hid("empty report\n");
......
...@@ -527,8 +527,10 @@ static noinline int hiddev_ioctl_usage(struct hiddev *hiddev, unsigned int cmd, ...@@ -527,8 +527,10 @@ static noinline int hiddev_ioctl_usage(struct hiddev *hiddev, unsigned int cmd,
goto goodreturn; goto goodreturn;
case HIDIOCGCOLLECTIONINDEX: case HIDIOCGCOLLECTIONINDEX:
i = field->usage[uref->usage_index].collection_index;
unlock_kernel();
kfree(uref_multi); kfree(uref_multi);
return field->usage[uref->usage_index].collection_index; return i;
case HIDIOCGUSAGES: case HIDIOCGUSAGES:
for (i = 0; i < uref_multi->num_values; i++) for (i = 0; i < uref_multi->num_values; i++)
uref_multi->values[i] = uref_multi->values[i] =
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment