* [asahilinux:bits/090-spi-hid 15/21] drivers/hid/dockchannel-hid/dockchannel-hid.c:1173 dockchannel_hid_probe() warn: passing zero to 'PTR_ERR'
@ 2023-11-27 9:43 kernel test robot
0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2023-11-27 9:43 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Dan Carpenter
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: Hector Martin <marcan@marcan.st>
tree: https://github.com/AsahiLinux/linux bits/090-spi-hid
head: 16871bb3228eaf55cbdb1dfb81c1cecec4ee0d52
commit: af53f3ff74f442fae36262bda9be6a94ad52925e [15/21] hid: Add Apple DockChannel HID transport driver
:::::: branch date: 8 days ago
:::::: commit date: 10 weeks ago
config: parisc-randconfig-r071-20231127 (https://download.01.org/0day-ci/archive/20231127/202311271546.ImsRFnlZ-lkp@intel.com/config)
compiler: hppa-linux-gcc (GCC) 13.2.0
reproduce: (https://download.01.org/0day-ci/archive/20231127/202311271546.ImsRFnlZ-lkp@intel.com/reproduce)
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>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202311271546.ImsRFnlZ-lkp@intel.com/
smatch warnings:
drivers/hid/dockchannel-hid/dockchannel-hid.c:1173 dockchannel_hid_probe() warn: passing zero to 'PTR_ERR'
vim +/PTR_ERR +1173 drivers/hid/dockchannel-hid/dockchannel-hid.c
af53f3ff74f442 Hector Martin 2022-07-08 1093
af53f3ff74f442 Hector Martin 2022-07-08 1094 static int dockchannel_hid_probe(struct platform_device *pdev)
af53f3ff74f442 Hector Martin 2022-07-08 1095 {
af53f3ff74f442 Hector Martin 2022-07-08 1096 struct device *dev = &pdev->dev;
af53f3ff74f442 Hector Martin 2022-07-08 1097 struct dockchannel_hid *dchid;
af53f3ff74f442 Hector Martin 2022-07-08 1098 struct device_node *child, *helper;
af53f3ff74f442 Hector Martin 2022-07-08 1099 struct platform_device *helper_pdev;
af53f3ff74f442 Hector Martin 2022-07-08 1100 struct property *prop;
af53f3ff74f442 Hector Martin 2022-07-08 1101 int ret;
af53f3ff74f442 Hector Martin 2022-07-08 1102
af53f3ff74f442 Hector Martin 2022-07-08 1103 ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
af53f3ff74f442 Hector Martin 2022-07-08 1104 if (ret)
af53f3ff74f442 Hector Martin 2022-07-08 1105 return ret;
af53f3ff74f442 Hector Martin 2022-07-08 1106
af53f3ff74f442 Hector Martin 2022-07-08 1107 dchid = devm_kzalloc(dev, sizeof(*dchid), GFP_KERNEL);
af53f3ff74f442 Hector Martin 2022-07-08 1108 if (!dchid) {
af53f3ff74f442 Hector Martin 2022-07-08 1109 return -ENOMEM;
af53f3ff74f442 Hector Martin 2022-07-08 1110 }
af53f3ff74f442 Hector Martin 2022-07-08 1111
af53f3ff74f442 Hector Martin 2022-07-08 1112 dchid->dev = dev;
af53f3ff74f442 Hector Martin 2022-07-08 1113
af53f3ff74f442 Hector Martin 2022-07-08 1114 /*
af53f3ff74f442 Hector Martin 2022-07-08 1115 * First make sure all the GPIOs are available, in cased we need to defer.
af53f3ff74f442 Hector Martin 2022-07-08 1116 * This is necessary because MTP will request them by name later, and by then
af53f3ff74f442 Hector Martin 2022-07-08 1117 * it's too late to defer the probe.
af53f3ff74f442 Hector Martin 2022-07-08 1118 */
af53f3ff74f442 Hector Martin 2022-07-08 1119
af53f3ff74f442 Hector Martin 2022-07-08 1120 for_each_child_of_node(dev->of_node, child) {
af53f3ff74f442 Hector Martin 2022-07-08 1121 for_each_property_of_node(child, prop) {
af53f3ff74f442 Hector Martin 2022-07-08 1122 size_t len = strlen(prop->name);
af53f3ff74f442 Hector Martin 2022-07-08 1123 struct gpio_desc *gpio;
af53f3ff74f442 Hector Martin 2022-07-08 1124
af53f3ff74f442 Hector Martin 2022-07-08 1125 if (len < 12 || strncmp("apple,", prop->name, 6) ||
af53f3ff74f442 Hector Martin 2022-07-08 1126 strcmp("-gpios", prop->name + len - 6))
af53f3ff74f442 Hector Martin 2022-07-08 1127 continue;
af53f3ff74f442 Hector Martin 2022-07-08 1128
af53f3ff74f442 Hector Martin 2022-07-08 1129 gpio = fwnode_gpiod_get_index(&child->fwnode, prop->name, 0, GPIOD_ASIS,
af53f3ff74f442 Hector Martin 2022-07-08 1130 prop->name);
af53f3ff74f442 Hector Martin 2022-07-08 1131 if (IS_ERR_OR_NULL(gpio)) {
af53f3ff74f442 Hector Martin 2022-07-08 1132 if (PTR_ERR(gpio) == -EPROBE_DEFER) {
af53f3ff74f442 Hector Martin 2022-07-08 1133 of_node_put(child);
af53f3ff74f442 Hector Martin 2022-07-08 1134 return -EPROBE_DEFER;
af53f3ff74f442 Hector Martin 2022-07-08 1135 }
af53f3ff74f442 Hector Martin 2022-07-08 1136 } else {
af53f3ff74f442 Hector Martin 2022-07-08 1137 gpiod_put(gpio);
af53f3ff74f442 Hector Martin 2022-07-08 1138 }
af53f3ff74f442 Hector Martin 2022-07-08 1139 }
af53f3ff74f442 Hector Martin 2022-07-08 1140 }
af53f3ff74f442 Hector Martin 2022-07-08 1141
af53f3ff74f442 Hector Martin 2022-07-08 1142 /*
af53f3ff74f442 Hector Martin 2022-07-08 1143 * Make sure we also have the MTP coprocessor available, and
af53f3ff74f442 Hector Martin 2022-07-08 1144 * defer probe if the helper hasn't probed yet.
af53f3ff74f442 Hector Martin 2022-07-08 1145 */
af53f3ff74f442 Hector Martin 2022-07-08 1146 helper = of_parse_phandle(dev->of_node, "apple,helper-cpu", 0);
af53f3ff74f442 Hector Martin 2022-07-08 1147 if (!helper) {
af53f3ff74f442 Hector Martin 2022-07-08 1148 dev_err(dev, "Missing apple,helper-cpu property");
af53f3ff74f442 Hector Martin 2022-07-08 1149 return -EINVAL;
af53f3ff74f442 Hector Martin 2022-07-08 1150 }
af53f3ff74f442 Hector Martin 2022-07-08 1151
af53f3ff74f442 Hector Martin 2022-07-08 1152 helper_pdev = of_find_device_by_node(helper);
af53f3ff74f442 Hector Martin 2022-07-08 1153 of_node_put(helper);
af53f3ff74f442 Hector Martin 2022-07-08 1154 if (!helper_pdev) {
af53f3ff74f442 Hector Martin 2022-07-08 1155 dev_err(dev, "Failed to find helper device");
af53f3ff74f442 Hector Martin 2022-07-08 1156 return -EINVAL;
af53f3ff74f442 Hector Martin 2022-07-08 1157 }
af53f3ff74f442 Hector Martin 2022-07-08 1158
af53f3ff74f442 Hector Martin 2022-07-08 1159 dchid->helper_link = device_link_add(dev, &helper_pdev->dev,
af53f3ff74f442 Hector Martin 2022-07-08 1160 DL_FLAG_AUTOREMOVE_CONSUMER);
af53f3ff74f442 Hector Martin 2022-07-08 1161 put_device(&helper_pdev->dev);
af53f3ff74f442 Hector Martin 2022-07-08 1162 if (!dchid->helper_link) {
af53f3ff74f442 Hector Martin 2022-07-08 1163 dev_err(dev, "Failed to link to helper device");
af53f3ff74f442 Hector Martin 2022-07-08 1164 return -EINVAL;
af53f3ff74f442 Hector Martin 2022-07-08 1165 }
af53f3ff74f442 Hector Martin 2022-07-08 1166
af53f3ff74f442 Hector Martin 2022-07-08 1167 if (dchid->helper_link->supplier->links.status != DL_DEV_DRIVER_BOUND)
af53f3ff74f442 Hector Martin 2022-07-08 1168 return -EPROBE_DEFER;
af53f3ff74f442 Hector Martin 2022-07-08 1169
af53f3ff74f442 Hector Martin 2022-07-08 1170 /* Now it is safe to begin initializing */
af53f3ff74f442 Hector Martin 2022-07-08 1171 dchid->dc = dockchannel_init(pdev);
af53f3ff74f442 Hector Martin 2022-07-08 1172 if (IS_ERR_OR_NULL(dchid->dc)) {
af53f3ff74f442 Hector Martin 2022-07-08 @1173 return PTR_ERR(dchid->dc);
af53f3ff74f442 Hector Martin 2022-07-08 1174 }
af53f3ff74f442 Hector Martin 2022-07-08 1175 dchid->new_iface_wq = alloc_workqueue("dchid-new", WQ_MEM_RECLAIM, 0);
af53f3ff74f442 Hector Martin 2022-07-08 1176 if (!dchid->new_iface_wq)
af53f3ff74f442 Hector Martin 2022-07-08 1177 return -ENOMEM;
af53f3ff74f442 Hector Martin 2022-07-08 1178
af53f3ff74f442 Hector Martin 2022-07-08 1179 dchid->comm = dchid_get_interface(dchid, IFACE_COMM, "comm");
af53f3ff74f442 Hector Martin 2022-07-08 1180 if (!dchid->comm) {
af53f3ff74f442 Hector Martin 2022-07-08 1181 dev_err(dchid->dev, "Failed to initialize comm interface");
af53f3ff74f442 Hector Martin 2022-07-08 1182 return -EIO;
af53f3ff74f442 Hector Martin 2022-07-08 1183 }
af53f3ff74f442 Hector Martin 2022-07-08 1184
af53f3ff74f442 Hector Martin 2022-07-08 1185 dev_info(dchid->dev, "Initialized, awaiting packets\n");
af53f3ff74f442 Hector Martin 2022-07-08 1186 dockchannel_await(dchid->dc, dchid_handle_packet, dchid, sizeof(struct dchid_hdr));
af53f3ff74f442 Hector Martin 2022-07-08 1187
af53f3ff74f442 Hector Martin 2022-07-08 1188 return 0;
af53f3ff74f442 Hector Martin 2022-07-08 1189 }
af53f3ff74f442 Hector Martin 2022-07-08 1190
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 2+ messages in thread* [asahilinux:bits/090-spi-hid 15/21] drivers/hid/dockchannel-hid/dockchannel-hid.c:1173 dockchannel_hid_probe() warn: passing zero to 'PTR_ERR'
@ 2023-11-27 11:30 Dan Carpenter
0 siblings, 0 replies; 2+ messages in thread
From: Dan Carpenter @ 2023-11-27 11:30 UTC (permalink / raw)
To: oe-kbuild, Hector Martin; +Cc: lkp, oe-kbuild-all
tree: https://github.com/AsahiLinux/linux bits/090-spi-hid
head: 16871bb3228eaf55cbdb1dfb81c1cecec4ee0d52
commit: af53f3ff74f442fae36262bda9be6a94ad52925e [15/21] hid: Add Apple DockChannel HID transport driver
config: parisc-randconfig-r071-20231127 (https://download.01.org/0day-ci/archive/20231127/202311271546.ImsRFnlZ-lkp@intel.com/config)
compiler: hppa-linux-gcc (GCC) 13.2.0
reproduce: (https://download.01.org/0day-ci/archive/20231127/202311271546.ImsRFnlZ-lkp@intel.com/reproduce)
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>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202311271546.ImsRFnlZ-lkp@intel.com/
smatch warnings:
drivers/hid/dockchannel-hid/dockchannel-hid.c:1173 dockchannel_hid_probe() warn: passing zero to 'PTR_ERR'
vim +/PTR_ERR +1173 drivers/hid/dockchannel-hid/dockchannel-hid.c
af53f3ff74f442 Hector Martin 2022-07-08 1094 static int dockchannel_hid_probe(struct platform_device *pdev)
af53f3ff74f442 Hector Martin 2022-07-08 1095 {
af53f3ff74f442 Hector Martin 2022-07-08 1096 struct device *dev = &pdev->dev;
af53f3ff74f442 Hector Martin 2022-07-08 1097 struct dockchannel_hid *dchid;
af53f3ff74f442 Hector Martin 2022-07-08 1098 struct device_node *child, *helper;
af53f3ff74f442 Hector Martin 2022-07-08 1099 struct platform_device *helper_pdev;
af53f3ff74f442 Hector Martin 2022-07-08 1100 struct property *prop;
af53f3ff74f442 Hector Martin 2022-07-08 1101 int ret;
af53f3ff74f442 Hector Martin 2022-07-08 1102
af53f3ff74f442 Hector Martin 2022-07-08 1103 ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
af53f3ff74f442 Hector Martin 2022-07-08 1104 if (ret)
af53f3ff74f442 Hector Martin 2022-07-08 1105 return ret;
af53f3ff74f442 Hector Martin 2022-07-08 1106
af53f3ff74f442 Hector Martin 2022-07-08 1107 dchid = devm_kzalloc(dev, sizeof(*dchid), GFP_KERNEL);
af53f3ff74f442 Hector Martin 2022-07-08 1108 if (!dchid) {
af53f3ff74f442 Hector Martin 2022-07-08 1109 return -ENOMEM;
af53f3ff74f442 Hector Martin 2022-07-08 1110 }
af53f3ff74f442 Hector Martin 2022-07-08 1111
af53f3ff74f442 Hector Martin 2022-07-08 1112 dchid->dev = dev;
af53f3ff74f442 Hector Martin 2022-07-08 1113
af53f3ff74f442 Hector Martin 2022-07-08 1114 /*
af53f3ff74f442 Hector Martin 2022-07-08 1115 * First make sure all the GPIOs are available, in cased we need to defer.
af53f3ff74f442 Hector Martin 2022-07-08 1116 * This is necessary because MTP will request them by name later, and by then
af53f3ff74f442 Hector Martin 2022-07-08 1117 * it's too late to defer the probe.
af53f3ff74f442 Hector Martin 2022-07-08 1118 */
af53f3ff74f442 Hector Martin 2022-07-08 1119
af53f3ff74f442 Hector Martin 2022-07-08 1120 for_each_child_of_node(dev->of_node, child) {
af53f3ff74f442 Hector Martin 2022-07-08 1121 for_each_property_of_node(child, prop) {
af53f3ff74f442 Hector Martin 2022-07-08 1122 size_t len = strlen(prop->name);
af53f3ff74f442 Hector Martin 2022-07-08 1123 struct gpio_desc *gpio;
af53f3ff74f442 Hector Martin 2022-07-08 1124
af53f3ff74f442 Hector Martin 2022-07-08 1125 if (len < 12 || strncmp("apple,", prop->name, 6) ||
af53f3ff74f442 Hector Martin 2022-07-08 1126 strcmp("-gpios", prop->name + len - 6))
af53f3ff74f442 Hector Martin 2022-07-08 1127 continue;
af53f3ff74f442 Hector Martin 2022-07-08 1128
af53f3ff74f442 Hector Martin 2022-07-08 1129 gpio = fwnode_gpiod_get_index(&child->fwnode, prop->name, 0, GPIOD_ASIS,
af53f3ff74f442 Hector Martin 2022-07-08 1130 prop->name);
af53f3ff74f442 Hector Martin 2022-07-08 1131 if (IS_ERR_OR_NULL(gpio)) {
af53f3ff74f442 Hector Martin 2022-07-08 1132 if (PTR_ERR(gpio) == -EPROBE_DEFER) {
af53f3ff74f442 Hector Martin 2022-07-08 1133 of_node_put(child);
af53f3ff74f442 Hector Martin 2022-07-08 1134 return -EPROBE_DEFER;
af53f3ff74f442 Hector Martin 2022-07-08 1135 }
af53f3ff74f442 Hector Martin 2022-07-08 1136 } else {
af53f3ff74f442 Hector Martin 2022-07-08 1137 gpiod_put(gpio);
af53f3ff74f442 Hector Martin 2022-07-08 1138 }
af53f3ff74f442 Hector Martin 2022-07-08 1139 }
af53f3ff74f442 Hector Martin 2022-07-08 1140 }
af53f3ff74f442 Hector Martin 2022-07-08 1141
af53f3ff74f442 Hector Martin 2022-07-08 1142 /*
af53f3ff74f442 Hector Martin 2022-07-08 1143 * Make sure we also have the MTP coprocessor available, and
af53f3ff74f442 Hector Martin 2022-07-08 1144 * defer probe if the helper hasn't probed yet.
af53f3ff74f442 Hector Martin 2022-07-08 1145 */
af53f3ff74f442 Hector Martin 2022-07-08 1146 helper = of_parse_phandle(dev->of_node, "apple,helper-cpu", 0);
af53f3ff74f442 Hector Martin 2022-07-08 1147 if (!helper) {
af53f3ff74f442 Hector Martin 2022-07-08 1148 dev_err(dev, "Missing apple,helper-cpu property");
af53f3ff74f442 Hector Martin 2022-07-08 1149 return -EINVAL;
af53f3ff74f442 Hector Martin 2022-07-08 1150 }
af53f3ff74f442 Hector Martin 2022-07-08 1151
af53f3ff74f442 Hector Martin 2022-07-08 1152 helper_pdev = of_find_device_by_node(helper);
af53f3ff74f442 Hector Martin 2022-07-08 1153 of_node_put(helper);
af53f3ff74f442 Hector Martin 2022-07-08 1154 if (!helper_pdev) {
af53f3ff74f442 Hector Martin 2022-07-08 1155 dev_err(dev, "Failed to find helper device");
af53f3ff74f442 Hector Martin 2022-07-08 1156 return -EINVAL;
af53f3ff74f442 Hector Martin 2022-07-08 1157 }
af53f3ff74f442 Hector Martin 2022-07-08 1158
af53f3ff74f442 Hector Martin 2022-07-08 1159 dchid->helper_link = device_link_add(dev, &helper_pdev->dev,
af53f3ff74f442 Hector Martin 2022-07-08 1160 DL_FLAG_AUTOREMOVE_CONSUMER);
af53f3ff74f442 Hector Martin 2022-07-08 1161 put_device(&helper_pdev->dev);
af53f3ff74f442 Hector Martin 2022-07-08 1162 if (!dchid->helper_link) {
af53f3ff74f442 Hector Martin 2022-07-08 1163 dev_err(dev, "Failed to link to helper device");
af53f3ff74f442 Hector Martin 2022-07-08 1164 return -EINVAL;
af53f3ff74f442 Hector Martin 2022-07-08 1165 }
af53f3ff74f442 Hector Martin 2022-07-08 1166
af53f3ff74f442 Hector Martin 2022-07-08 1167 if (dchid->helper_link->supplier->links.status != DL_DEV_DRIVER_BOUND)
af53f3ff74f442 Hector Martin 2022-07-08 1168 return -EPROBE_DEFER;
af53f3ff74f442 Hector Martin 2022-07-08 1169
af53f3ff74f442 Hector Martin 2022-07-08 1170 /* Now it is safe to begin initializing */
af53f3ff74f442 Hector Martin 2022-07-08 1171 dchid->dc = dockchannel_init(pdev);
af53f3ff74f442 Hector Martin 2022-07-08 1172 if (IS_ERR_OR_NULL(dchid->dc)) {
af53f3ff74f442 Hector Martin 2022-07-08 @1173 return PTR_ERR(dchid->dc);
We are returning success if dockchannel_init() returns NULL.
I only look at this email, but my guess without looking at the context
is that the IS_ERR_OR_NULL() check should just be IS_ERR(). Otherwise
it means that dockchannel_init() is optional. See my blog for more
details.
https://staticthinking.wordpress.com/2022/08/01/mixing-error-pointers-and-null/
af53f3ff74f442 Hector Martin 2022-07-08 1174 }
af53f3ff74f442 Hector Martin 2022-07-08 1175 dchid->new_iface_wq = alloc_workqueue("dchid-new", WQ_MEM_RECLAIM, 0);
af53f3ff74f442 Hector Martin 2022-07-08 1176 if (!dchid->new_iface_wq)
af53f3ff74f442 Hector Martin 2022-07-08 1177 return -ENOMEM;
af53f3ff74f442 Hector Martin 2022-07-08 1178
af53f3ff74f442 Hector Martin 2022-07-08 1179 dchid->comm = dchid_get_interface(dchid, IFACE_COMM, "comm");
af53f3ff74f442 Hector Martin 2022-07-08 1180 if (!dchid->comm) {
af53f3ff74f442 Hector Martin 2022-07-08 1181 dev_err(dchid->dev, "Failed to initialize comm interface");
af53f3ff74f442 Hector Martin 2022-07-08 1182 return -EIO;
af53f3ff74f442 Hector Martin 2022-07-08 1183 }
af53f3ff74f442 Hector Martin 2022-07-08 1184
af53f3ff74f442 Hector Martin 2022-07-08 1185 dev_info(dchid->dev, "Initialized, awaiting packets\n");
af53f3ff74f442 Hector Martin 2022-07-08 1186 dockchannel_await(dchid->dc, dchid_handle_packet, dchid, sizeof(struct dchid_hdr));
af53f3ff74f442 Hector Martin 2022-07-08 1187
af53f3ff74f442 Hector Martin 2022-07-08 1188 return 0;
af53f3ff74f442 Hector Martin 2022-07-08 1189 }
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2023-11-27 11:30 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-11-27 9:43 [asahilinux:bits/090-spi-hid 15/21] drivers/hid/dockchannel-hid/dockchannel-hid.c:1173 dockchannel_hid_probe() warn: passing zero to 'PTR_ERR' kernel test robot
-- strict thread matches above, loose matches on Subject: below --
2023-11-27 11:30 Dan Carpenter
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.