Re: [PATCH] usb: dwc3: gadget: create per ep interrupts

kernel test robot
2024-05-07T14:38:49Z

Hi Michael,

kernel test robot noticed the following build warnings:

[auto build test WARNING on dd5a440a31fae6e459c0d6271dddd62825505361]

url: https://github.com/intel-lab-lkp/linux/commits/Michael-Grzeschik/usb-dwc3-gadget-create-per-ep-interrupts/20240507-070804
base: dd5a440a31fae6e459c0d6271dddd62825505361
patch link: https://lore.kernel.org/r/20240507-dwc3_per_ep_irqthread-v1-1-f14dec6de19f%40pengutronix.de
patch subject: [PATCH] usb: dwc3: gadget: create per ep interrupts
config: i386-randconfig-141-20240507 (https://download.01.org/0day-ci/archive/20240507/202405072202.VCOpSmIK-lkp@intel.com/config)
compiler: clang version 18.1.4 (https://github.com/llvm/llvm-project e6c3289804a67ea0bb6a86fadbe454dd93b8d855)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202405072202.VCOpSmIK-lkp@intel.com/

New smatch warnings:
drivers/usb/dwc3/gadget.c:1126 dwc3_gadget_init_endpoint_irq() warn: unsigned 'dep->irq_endpoint' is never less than zero.
drivers/usb/dwc3/gadget.c:3077 dwc3_gadget_start() warn: 'dwc->irq_gadget' from request_threaded_irq() not released on lines: 3067.

Old smatch warnings:
drivers/usb/dwc3/gadget.c:1733 __dwc3_gadget_kick_transfer() warn: missing error code? 'ret'
drivers/usb/dwc3/gadget.c:2848 dwc3_gadget_pullup() warn: pm_runtime_get_sync() also returns 1 on success

vim +1126 drivers/usb/dwc3/gadget.c

1111
1112 static int dwc3_gadget_init_endpoint_irq(struct dwc3 *dwc, struct dwc3_ep *dep)
1113 {
1114 char *irq_name;
1115 int ret = 0;
1116
1117 /* FIXME: endpoint.claimed would be better here, but somehow
1118 * the composite gadget layer is leaving the claimed value to 0
1119 * after calling usb_ep_autoconfig_reset after the final bind
1120 */
1121 /* ep0in and ep0out share the same interrupt thread */
1122 if (!dep->endpoint.address && dep->number)
1123 return 0;
1124
1125 dep->irq_endpoint = irq_create_mapping(dwc->ep_irq_domain, dep->number);
> 1126 if (dep->irq_endpoint < 0) {
1127 ret = dep->irq_endpoint;
1128
1129 dev_err(dwc->dev, "failed to map irq for ep%d --> %d\n",
1130 dep->number, ret);
1131 return ret;
1132 }
1133
1134 irq_name = kzalloc(16, GFP_KERNEL);
1135 if (!dep->number)
1136 snprintf(irq_name, 16, "ep0");
1137 else
1138 snprintf(irq_name, 16, "ep%d%s", dep->number >> 1, dep->direction ?
1139 "in" : "out");
1140
1141 ret = request_threaded_irq(dep->irq_endpoint, dwc3_endpoint_irq,
1142 dwc3_endpoint_thread_irq, IRQF_SHARED,
1143 irq_name, dep);
1144 if (ret) {
1145 irq_dispose_mapping(irq_find_mapping(dwc->ep_irq_domain, dep->number));
1146 dev_err(dwc->dev, "failed to request irq #%d --> %d\n",
1147 dep->irq_endpoint, ret);
1148 }
1149
1150 return ret;
1151 }
1152

--
0-DAY CI Kernel Test Service