FAILED: patch "[PATCH] media: rc: igorplugusb: heed coherency rules" failed to apply to 6.18-stable tree
[email protected]
maintainerThe patch below does not apply to the 6.18-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.18.y
git checkout FETCH_HEAD
git cherry-pick -x eac69475b01fe1e861dfe3960b57fa95671c132e
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2026050130-repaint-elevate-1042@gregkh' --subject-prefix 'PATCH 6.18.y' HEAD^..
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From eac69475b01fe1e861dfe3960b57fa95671c132e Mon Sep 17 00:00:00 2001
From: Oliver Neukum <[email protected]>
Date: Wed, 11 Feb 2026 19:11:51 +0100
Subject: [PATCH] media: rc: igorplugusb: heed coherency rules
In a control request, the USB request structure can be subject to DMA on some HCs. Hence it must obey the rules for DMA coherency. Allocate it separately.
drivers/media/rc/igorplugusb.c +11 -5
@@ -34,7 +34,7 @@ struct igorplugusb {struct device *dev;struct urb *urb; -struct usb_ctrlrequest request; +struct usb_ctrlrequest *request;struct timer_list timer;
@@ -122,7 +122,7 @@ static void igorplugusb_cmd(struct igorplugusb *ir, int cmd) {int ret; - ir->request.bRequest = cmd; + ir->request->bRequest = cmd; ir->urb->transfer_flags =0 ; ret =usb_submit_urb (ir->urb,GFP_ATOMIC );if (ret && ret != -EPERM )
@@ -164,13 +164,17 @@ static int igorplugusb_probe(struct usb_interface *intf,if (!ir)return -ENOMEM ; + ir->request =kzalloc_obj (*ir->request,GFP_KERNEL ); +if (!ir->request) + goto fail; + ir->dev = &intf->dev;timer_setup (&ir->timer, igorplugusb_timer,0 ); - ir->request.bRequest =GET_INFRACODE ; - ir->request.bRequestType =USB_TYPE_VENDOR |USB_DIR_IN ; - ir->request.wLength =cpu_to_le16 (MAX_PACKET ); + ir->request->bRequest =GET_INFRACODE ; + ir->request->bRequestType =USB_TYPE_VENDOR |USB_DIR_IN ; + ir->request->wLength =cpu_to_le16 (MAX_PACKET ); ir->urb =usb_alloc_urb (0 ,GFP_KERNEL );if (!ir->urb)
@@ -228,6 +232,7 @@ static int igorplugusb_probe(struct usb_interface *intf,usb_free_urb (ir->urb);rc_free_device (ir->rc);kfree (ir->buf_in); +kfree (ir->request);return ret; }
@@ -244,6 +249,7 @@ static void igorplugusb_disconnect(struct usb_interface *intf)usb_free_urb (ir->urb);rc_free_device (ir->rc);kfree (ir->buf_in); +kfree (ir->request); }static const struct usb_device_id igorplugusb_table[] = {
Sasha Levin
maintainerPATCH 1/1 media: rc: igorplugusb: heed coherency rules
From: Oliver Neukum <[email protected]>
[ Upstream commit eac69475b01fe1e861dfe3960b57fa95671c132e ]
In a control request, the USB request structure can be subject to DMA on some HCs. Hence it must obey the rules for DMA coherency. Allocate it separately.
--- drivers/media/rc/igorplugusb.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-)
drivers/media/rc/igorplugusb.c +11 -5
@@ -34,7 +34,7 @@ struct igorplugusb {struct device *dev;struct urb *urb; -struct usb_ctrlrequest request; +struct usb_ctrlrequest *request;struct timer_list timer;
@@ -122,7 +122,7 @@ static void igorplugusb_cmd(struct igorplugusb *ir, int cmd) {int ret; - ir->request.bRequest = cmd; + ir->request->bRequest = cmd; ir->urb->transfer_flags =0 ; ret =usb_submit_urb (ir->urb,GFP_ATOMIC );if (ret && ret != -EPERM )
@@ -164,13 +164,17 @@ static int igorplugusb_probe(struct usb_interface *intf,if (!ir)return -ENOMEM ; + ir->request =kzalloc (sizeof (*ir->request),GFP_KERNEL ); +if (!ir->request) + goto fail; + ir->dev = &intf->dev;timer_setup (&ir->timer, igorplugusb_timer,0 ); - ir->request.bRequest =GET_INFRACODE ; - ir->request.bRequestType =USB_TYPE_VENDOR |USB_DIR_IN ; - ir->request.wLength =cpu_to_le16 (MAX_PACKET ); + ir->request->bRequest =GET_INFRACODE ; + ir->request->bRequestType =USB_TYPE_VENDOR |USB_DIR_IN ; + ir->request->wLength =cpu_to_le16 (MAX_PACKET ); ir->urb =usb_alloc_urb (0 ,GFP_KERNEL );if (!ir->urb)
@@ -228,6 +232,7 @@ static int igorplugusb_probe(struct usb_interface *intf,usb_free_urb (ir->urb);rc_free_device (ir->rc);kfree (ir->buf_in); +kfree (ir->request);return ret; }
@@ -243,6 +248,7 @@ static void igorplugusb_disconnect(struct usb_interface *intf)usb_unpoison_urb (ir->urb);usb_free_urb (ir->urb);kfree (ir->buf_in); +kfree (ir->request); }static const struct usb_device_id igorplugusb_table[] = {
Signature · 1 line
2.53.0