forked from Minki/linux
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
This commit is contained in:
commit
1fd1f28536
@ -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,
|
|||||||
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] =
|
||||||
|
Loading…
Reference in New Issue
Block a user