Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b7a87ad6 authored by Benjamin Tissoires's avatar Benjamin Tissoires Committed by Jiri Kosina
Browse files

HID: magicmouse: make transfer buffers DMA capable



Kernel v4.9 strictly enforces DMA capable buffers, so we need to remove
buffers allocated on the stack.

Signed-off-by: default avatarBenjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
parent 061232f0
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -493,7 +493,8 @@ static int magicmouse_input_configured(struct hid_device *hdev,
static int magicmouse_probe(struct hid_device *hdev,
	const struct hid_device_id *id)
{
	__u8 feature[] = { 0xd7, 0x01 };
	const u8 feature[] = { 0xd7, 0x01 };
	u8 *buf;
	struct magicmouse_sc *msc;
	struct hid_report *report;
	int ret;
@@ -544,6 +545,12 @@ static int magicmouse_probe(struct hid_device *hdev,
	}
	report->size = 6;

	buf = kmemdup(feature, sizeof(feature), GFP_KERNEL);
	if (!buf) {
		ret = -ENOMEM;
		goto err_stop_hw;
	}

	/*
	 * Some devices repond with 'invalid report id' when feature
	 * report switching it into multitouch mode is sent to it.
@@ -552,8 +559,9 @@ static int magicmouse_probe(struct hid_device *hdev,
	 * but there seems to be no other way of switching the mode.
	 * Thus the super-ugly hacky success check below.
	 */
	ret = hid_hw_raw_request(hdev, feature[0], feature, sizeof(feature),
	ret = hid_hw_raw_request(hdev, buf[0], buf, sizeof(feature),
				HID_FEATURE_REPORT, HID_REQ_SET_REPORT);
	kfree(buf);
	if (ret != -EIO && ret != sizeof(feature)) {
		hid_err(hdev, "unable to request touch data (%d)\n", ret);
		goto err_stop_hw;