* [sashal-linux-stable:queue-4.9 26/29] drivers/usb/usbip/vudc_sysfs.c:238 store_sockfd() warn: inconsistent returns '&udc->ud.sysfs_lock'.
@ 2021-04-28 10:50 ` Dan Carpenter
0 siblings, 0 replies; 3+ messages in thread
From: Dan Carpenter @ 2021-04-28 10:50 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 10499 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/sashal/linux-stable.git queue-4.9
head: 7edb2da8d62438a92699cb11688ad9f372fc32fc
commit: 117246f8e1e52f36549f8e420418f4673d4ddca2 [26/29] usbip: vudc synchronize sysfs code paths
config: arc-randconfig-m031-20210425 (attached as .config)
compiler: arceb-elf-gcc (GCC) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
smatch warnings:
drivers/usb/usbip/vudc_sysfs.c:238 store_sockfd() warn: inconsistent returns '&udc->ud.sysfs_lock'.
vim +238 drivers/usb/usbip/vudc_sysfs.c
fe9e15a30be666 Shuah Khan 2021-03-07 106 static ssize_t store_sockfd(struct device *dev,
fe9e15a30be666 Shuah Khan 2021-03-07 107 struct device_attribute *attr,
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 108 const char *in, size_t count)
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 109 {
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 110 struct vudc *udc = (struct vudc *) dev_get_drvdata(dev);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 111 int rv;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 112 int sockfd = 0;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 113 int err;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 114 struct socket *socket;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 115 unsigned long flags;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 116 int ret;
fe9e15a30be666 Shuah Khan 2021-03-07 117 struct task_struct *tcp_rx = NULL;
fe9e15a30be666 Shuah Khan 2021-03-07 118 struct task_struct *tcp_tx = NULL;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 119
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 120 rv = kstrtoint(in, 0, &sockfd);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 121 if (rv != 0)
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 122 return -EINVAL;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 123
b7661e9af851da Colin Ian King 2018-02-22 124 if (!udc) {
b7661e9af851da Colin Ian King 2018-02-22 125 dev_err(dev, "no device");
b7661e9af851da Colin Ian King 2018-02-22 126 return -ENODEV;
b7661e9af851da Colin Ian King 2018-02-22 127 }
117246f8e1e52f Shuah Khan 2021-04-16 128 mutex_lock(&udc->ud.sysfs_lock);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 129 spin_lock_irqsave(&udc->lock, flags);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 130 /* Don't export what we don't have */
b7661e9af851da Colin Ian King 2018-02-22 131 if (!udc->driver || !udc->pullup) {
b7661e9af851da Colin Ian King 2018-02-22 132 dev_err(dev, "gadget not bound");
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 133 ret = -ENODEV;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 134 goto unlock;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 135 }
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 136
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 137 if (sockfd != -1) {
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 138 if (udc->connected) {
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 139 dev_err(dev, "Device already connected");
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 140 ret = -EBUSY;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 141 goto unlock;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 142 }
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 143
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 144 spin_lock_irq(&udc->ud.lock);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 145
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 146 if (udc->ud.status != SDEV_ST_AVAILABLE) {
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 147 ret = -EINVAL;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 148 goto unlock_ud;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 149 }
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 150
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 151 socket = sockfd_lookup(sockfd, &err);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 152 if (!socket) {
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 153 dev_err(dev, "failed to lookup sock");
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 154 ret = -EINVAL;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 155 goto unlock_ud;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 156 }
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 157
d5708a353836ac Shuah Khan 2021-03-07 158 if (socket->type != SOCK_STREAM) {
d5708a353836ac Shuah Khan 2021-03-07 159 dev_err(dev, "Expecting SOCK_STREAM - found %d",
d5708a353836ac Shuah Khan 2021-03-07 160 socket->type);
d5708a353836ac Shuah Khan 2021-03-07 161 ret = -EINVAL;
d5708a353836ac Shuah Khan 2021-03-07 162 goto sock_err;
d5708a353836ac Shuah Khan 2021-03-07 163 }
d5708a353836ac Shuah Khan 2021-03-07 164
fe9e15a30be666 Shuah Khan 2021-03-07 165 /* unlock and create threads and get tasks */
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 166 spin_unlock_irq(&udc->ud.lock);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 167 spin_unlock_irqrestore(&udc->lock, flags);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 168
fe9e15a30be666 Shuah Khan 2021-03-07 169 tcp_rx = kthread_create(&v_rx_loop, &udc->ud, "vudc_rx");
fe9e15a30be666 Shuah Khan 2021-03-07 170 if (IS_ERR(tcp_rx)) {
fe9e15a30be666 Shuah Khan 2021-03-07 171 sockfd_put(socket);
fe9e15a30be666 Shuah Khan 2021-03-07 172 return -EINVAL;
mutex_unlock(&udc->ud.sysfs_lock);
fe9e15a30be666 Shuah Khan 2021-03-07 173 }
fe9e15a30be666 Shuah Khan 2021-03-07 174 tcp_tx = kthread_create(&v_tx_loop, &udc->ud, "vudc_tx");
fe9e15a30be666 Shuah Khan 2021-03-07 175 if (IS_ERR(tcp_tx)) {
fe9e15a30be666 Shuah Khan 2021-03-07 176 kthread_stop(tcp_rx);
fe9e15a30be666 Shuah Khan 2021-03-07 177 sockfd_put(socket);
fe9e15a30be666 Shuah Khan 2021-03-07 178 return -EINVAL;
mutex_unlock(&udc->ud.sysfs_lock);
fe9e15a30be666 Shuah Khan 2021-03-07 179 }
fe9e15a30be666 Shuah Khan 2021-03-07 180
fe9e15a30be666 Shuah Khan 2021-03-07 181 /* get task structs now */
fe9e15a30be666 Shuah Khan 2021-03-07 182 get_task_struct(tcp_rx);
fe9e15a30be666 Shuah Khan 2021-03-07 183 get_task_struct(tcp_tx);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 184
fe9e15a30be666 Shuah Khan 2021-03-07 185 /* lock and update udc->ud state */
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 186 spin_lock_irqsave(&udc->lock, flags);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 187 spin_lock_irq(&udc->ud.lock);
fe9e15a30be666 Shuah Khan 2021-03-07 188
fe9e15a30be666 Shuah Khan 2021-03-07 189 udc->ud.tcp_socket = socket;
fe9e15a30be666 Shuah Khan 2021-03-07 190 udc->ud.tcp_rx = tcp_rx;
e957ba13608a1a Colin Ian King 2021-03-11 191 udc->ud.tcp_tx = tcp_tx;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 192 udc->ud.status = SDEV_ST_USED;
fe9e15a30be666 Shuah Khan 2021-03-07 193
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 194 spin_unlock_irq(&udc->ud.lock);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 195
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 196 do_gettimeofday(&udc->start_time);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 197 v_start_timer(udc);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 198 udc->connected = 1;
fe9e15a30be666 Shuah Khan 2021-03-07 199
fe9e15a30be666 Shuah Khan 2021-03-07 200 spin_unlock_irqrestore(&udc->lock, flags);
fe9e15a30be666 Shuah Khan 2021-03-07 201
fe9e15a30be666 Shuah Khan 2021-03-07 202 wake_up_process(udc->ud.tcp_rx);
fe9e15a30be666 Shuah Khan 2021-03-07 203 wake_up_process(udc->ud.tcp_tx);
117246f8e1e52f Shuah Khan 2021-04-16 204
117246f8e1e52f Shuah Khan 2021-04-16 205 mutex_unlock(&udc->ud.sysfs_lock);
fe9e15a30be666 Shuah Khan 2021-03-07 206 return count;
fe9e15a30be666 Shuah Khan 2021-03-07 207
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 208 } else {
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 209 if (!udc->connected) {
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 210 dev_err(dev, "Device not connected");
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 211 ret = -EINVAL;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 212 goto unlock;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 213 }
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 214
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 215 spin_lock_irq(&udc->ud.lock);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 216 if (udc->ud.status != SDEV_ST_USED) {
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 217 ret = -EINVAL;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 218 goto unlock_ud;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 219 }
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 220 spin_unlock_irq(&udc->ud.lock);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 221
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 222 usbip_event_add(&udc->ud, VUDC_EVENT_DOWN);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 223 }
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 224
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 225 spin_unlock_irqrestore(&udc->lock, flags);
117246f8e1e52f Shuah Khan 2021-04-16 226 mutex_unlock(&udc->ud.sysfs_lock);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 227
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 228 return count;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 229
d5708a353836ac Shuah Khan 2021-03-07 230 sock_err:
d5708a353836ac Shuah Khan 2021-03-07 231 sockfd_put(socket);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 232 unlock_ud:
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 233 spin_unlock_irq(&udc->ud.lock);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 234 unlock:
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 235 spin_unlock_irqrestore(&udc->lock, flags);
117246f8e1e52f Shuah Khan 2021-04-16 236 mutex_unlock(&udc->ud.sysfs_lock);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 237
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 @238 return ret;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 239 }
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 20828 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread* [sashal-linux-stable:queue-4.9 26/29] drivers/usb/usbip/vudc_sysfs.c:238 store_sockfd() warn: inconsistent returns '&udc->ud.sysfs_lock'.
@ 2021-04-28 10:50 ` Dan Carpenter
0 siblings, 0 replies; 3+ messages in thread
From: Dan Carpenter @ 2021-04-28 10:50 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 10499 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/sashal/linux-stable.git queue-4.9
head: 7edb2da8d62438a92699cb11688ad9f372fc32fc
commit: 117246f8e1e52f36549f8e420418f4673d4ddca2 [26/29] usbip: vudc synchronize sysfs code paths
config: arc-randconfig-m031-20210425 (attached as .config)
compiler: arceb-elf-gcc (GCC) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
smatch warnings:
drivers/usb/usbip/vudc_sysfs.c:238 store_sockfd() warn: inconsistent returns '&udc->ud.sysfs_lock'.
vim +238 drivers/usb/usbip/vudc_sysfs.c
fe9e15a30be666 Shuah Khan 2021-03-07 106 static ssize_t store_sockfd(struct device *dev,
fe9e15a30be666 Shuah Khan 2021-03-07 107 struct device_attribute *attr,
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 108 const char *in, size_t count)
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 109 {
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 110 struct vudc *udc = (struct vudc *) dev_get_drvdata(dev);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 111 int rv;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 112 int sockfd = 0;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 113 int err;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 114 struct socket *socket;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 115 unsigned long flags;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 116 int ret;
fe9e15a30be666 Shuah Khan 2021-03-07 117 struct task_struct *tcp_rx = NULL;
fe9e15a30be666 Shuah Khan 2021-03-07 118 struct task_struct *tcp_tx = NULL;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 119
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 120 rv = kstrtoint(in, 0, &sockfd);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 121 if (rv != 0)
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 122 return -EINVAL;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 123
b7661e9af851da Colin Ian King 2018-02-22 124 if (!udc) {
b7661e9af851da Colin Ian King 2018-02-22 125 dev_err(dev, "no device");
b7661e9af851da Colin Ian King 2018-02-22 126 return -ENODEV;
b7661e9af851da Colin Ian King 2018-02-22 127 }
117246f8e1e52f Shuah Khan 2021-04-16 128 mutex_lock(&udc->ud.sysfs_lock);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 129 spin_lock_irqsave(&udc->lock, flags);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 130 /* Don't export what we don't have */
b7661e9af851da Colin Ian King 2018-02-22 131 if (!udc->driver || !udc->pullup) {
b7661e9af851da Colin Ian King 2018-02-22 132 dev_err(dev, "gadget not bound");
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 133 ret = -ENODEV;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 134 goto unlock;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 135 }
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 136
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 137 if (sockfd != -1) {
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 138 if (udc->connected) {
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 139 dev_err(dev, "Device already connected");
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 140 ret = -EBUSY;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 141 goto unlock;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 142 }
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 143
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 144 spin_lock_irq(&udc->ud.lock);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 145
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 146 if (udc->ud.status != SDEV_ST_AVAILABLE) {
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 147 ret = -EINVAL;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 148 goto unlock_ud;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 149 }
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 150
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 151 socket = sockfd_lookup(sockfd, &err);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 152 if (!socket) {
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 153 dev_err(dev, "failed to lookup sock");
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 154 ret = -EINVAL;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 155 goto unlock_ud;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 156 }
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 157
d5708a353836ac Shuah Khan 2021-03-07 158 if (socket->type != SOCK_STREAM) {
d5708a353836ac Shuah Khan 2021-03-07 159 dev_err(dev, "Expecting SOCK_STREAM - found %d",
d5708a353836ac Shuah Khan 2021-03-07 160 socket->type);
d5708a353836ac Shuah Khan 2021-03-07 161 ret = -EINVAL;
d5708a353836ac Shuah Khan 2021-03-07 162 goto sock_err;
d5708a353836ac Shuah Khan 2021-03-07 163 }
d5708a353836ac Shuah Khan 2021-03-07 164
fe9e15a30be666 Shuah Khan 2021-03-07 165 /* unlock and create threads and get tasks */
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 166 spin_unlock_irq(&udc->ud.lock);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 167 spin_unlock_irqrestore(&udc->lock, flags);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 168
fe9e15a30be666 Shuah Khan 2021-03-07 169 tcp_rx = kthread_create(&v_rx_loop, &udc->ud, "vudc_rx");
fe9e15a30be666 Shuah Khan 2021-03-07 170 if (IS_ERR(tcp_rx)) {
fe9e15a30be666 Shuah Khan 2021-03-07 171 sockfd_put(socket);
fe9e15a30be666 Shuah Khan 2021-03-07 172 return -EINVAL;
mutex_unlock(&udc->ud.sysfs_lock);
fe9e15a30be666 Shuah Khan 2021-03-07 173 }
fe9e15a30be666 Shuah Khan 2021-03-07 174 tcp_tx = kthread_create(&v_tx_loop, &udc->ud, "vudc_tx");
fe9e15a30be666 Shuah Khan 2021-03-07 175 if (IS_ERR(tcp_tx)) {
fe9e15a30be666 Shuah Khan 2021-03-07 176 kthread_stop(tcp_rx);
fe9e15a30be666 Shuah Khan 2021-03-07 177 sockfd_put(socket);
fe9e15a30be666 Shuah Khan 2021-03-07 178 return -EINVAL;
mutex_unlock(&udc->ud.sysfs_lock);
fe9e15a30be666 Shuah Khan 2021-03-07 179 }
fe9e15a30be666 Shuah Khan 2021-03-07 180
fe9e15a30be666 Shuah Khan 2021-03-07 181 /* get task structs now */
fe9e15a30be666 Shuah Khan 2021-03-07 182 get_task_struct(tcp_rx);
fe9e15a30be666 Shuah Khan 2021-03-07 183 get_task_struct(tcp_tx);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 184
fe9e15a30be666 Shuah Khan 2021-03-07 185 /* lock and update udc->ud state */
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 186 spin_lock_irqsave(&udc->lock, flags);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 187 spin_lock_irq(&udc->ud.lock);
fe9e15a30be666 Shuah Khan 2021-03-07 188
fe9e15a30be666 Shuah Khan 2021-03-07 189 udc->ud.tcp_socket = socket;
fe9e15a30be666 Shuah Khan 2021-03-07 190 udc->ud.tcp_rx = tcp_rx;
e957ba13608a1a Colin Ian King 2021-03-11 191 udc->ud.tcp_tx = tcp_tx;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 192 udc->ud.status = SDEV_ST_USED;
fe9e15a30be666 Shuah Khan 2021-03-07 193
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 194 spin_unlock_irq(&udc->ud.lock);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 195
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 196 do_gettimeofday(&udc->start_time);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 197 v_start_timer(udc);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 198 udc->connected = 1;
fe9e15a30be666 Shuah Khan 2021-03-07 199
fe9e15a30be666 Shuah Khan 2021-03-07 200 spin_unlock_irqrestore(&udc->lock, flags);
fe9e15a30be666 Shuah Khan 2021-03-07 201
fe9e15a30be666 Shuah Khan 2021-03-07 202 wake_up_process(udc->ud.tcp_rx);
fe9e15a30be666 Shuah Khan 2021-03-07 203 wake_up_process(udc->ud.tcp_tx);
117246f8e1e52f Shuah Khan 2021-04-16 204
117246f8e1e52f Shuah Khan 2021-04-16 205 mutex_unlock(&udc->ud.sysfs_lock);
fe9e15a30be666 Shuah Khan 2021-03-07 206 return count;
fe9e15a30be666 Shuah Khan 2021-03-07 207
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 208 } else {
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 209 if (!udc->connected) {
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 210 dev_err(dev, "Device not connected");
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 211 ret = -EINVAL;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 212 goto unlock;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 213 }
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 214
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 215 spin_lock_irq(&udc->ud.lock);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 216 if (udc->ud.status != SDEV_ST_USED) {
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 217 ret = -EINVAL;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 218 goto unlock_ud;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 219 }
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 220 spin_unlock_irq(&udc->ud.lock);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 221
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 222 usbip_event_add(&udc->ud, VUDC_EVENT_DOWN);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 223 }
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 224
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 225 spin_unlock_irqrestore(&udc->lock, flags);
117246f8e1e52f Shuah Khan 2021-04-16 226 mutex_unlock(&udc->ud.sysfs_lock);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 227
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 228 return count;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 229
d5708a353836ac Shuah Khan 2021-03-07 230 sock_err:
d5708a353836ac Shuah Khan 2021-03-07 231 sockfd_put(socket);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 232 unlock_ud:
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 233 spin_unlock_irq(&udc->ud.lock);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 234 unlock:
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 235 spin_unlock_irqrestore(&udc->lock, flags);
117246f8e1e52f Shuah Khan 2021-04-16 236 mutex_unlock(&udc->ud.sysfs_lock);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 237
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 @238 return ret;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 239 }
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 20828 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
* [sashal-linux-stable:queue-4.9 26/29] drivers/usb/usbip/vudc_sysfs.c:238 store_sockfd() warn: inconsistent returns '&udc->ud.sysfs_lock'.
@ 2021-04-25 19:07 kernel test robot
0 siblings, 0 replies; 3+ messages in thread
From: kernel test robot @ 2021-04-25 19:07 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 10955 bytes --]
CC: kbuild-all(a)lists.01.org
TO: Sasha Levin <sashal@kernel.org>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/sashal/linux-stable.git queue-4.9
head: 7edb2da8d62438a92699cb11688ad9f372fc32fc
commit: 117246f8e1e52f36549f8e420418f4673d4ddca2 [26/29] usbip: vudc synchronize sysfs code paths
:::::: branch date: 4 hours ago
:::::: commit date: 4 hours ago
config: arc-randconfig-m031-20210425 (attached as .config)
compiler: arceb-elf-gcc (GCC) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
smatch warnings:
drivers/usb/usbip/vudc_sysfs.c:238 store_sockfd() warn: inconsistent returns '&udc->ud.sysfs_lock'.
vim +238 drivers/usb/usbip/vudc_sysfs.c
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 105
fe9e15a30be666 Shuah Khan 2021-03-07 106 static ssize_t store_sockfd(struct device *dev,
fe9e15a30be666 Shuah Khan 2021-03-07 107 struct device_attribute *attr,
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 108 const char *in, size_t count)
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 109 {
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 110 struct vudc *udc = (struct vudc *) dev_get_drvdata(dev);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 111 int rv;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 112 int sockfd = 0;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 113 int err;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 114 struct socket *socket;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 115 unsigned long flags;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 116 int ret;
fe9e15a30be666 Shuah Khan 2021-03-07 117 struct task_struct *tcp_rx = NULL;
fe9e15a30be666 Shuah Khan 2021-03-07 118 struct task_struct *tcp_tx = NULL;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 119
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 120 rv = kstrtoint(in, 0, &sockfd);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 121 if (rv != 0)
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 122 return -EINVAL;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 123
b7661e9af851da Colin Ian King 2018-02-22 124 if (!udc) {
b7661e9af851da Colin Ian King 2018-02-22 125 dev_err(dev, "no device");
b7661e9af851da Colin Ian King 2018-02-22 126 return -ENODEV;
b7661e9af851da Colin Ian King 2018-02-22 127 }
117246f8e1e52f Shuah Khan 2021-04-16 128 mutex_lock(&udc->ud.sysfs_lock);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 129 spin_lock_irqsave(&udc->lock, flags);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 130 /* Don't export what we don't have */
b7661e9af851da Colin Ian King 2018-02-22 131 if (!udc->driver || !udc->pullup) {
b7661e9af851da Colin Ian King 2018-02-22 132 dev_err(dev, "gadget not bound");
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 133 ret = -ENODEV;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 134 goto unlock;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 135 }
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 136
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 137 if (sockfd != -1) {
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 138 if (udc->connected) {
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 139 dev_err(dev, "Device already connected");
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 140 ret = -EBUSY;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 141 goto unlock;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 142 }
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 143
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 144 spin_lock_irq(&udc->ud.lock);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 145
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 146 if (udc->ud.status != SDEV_ST_AVAILABLE) {
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 147 ret = -EINVAL;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 148 goto unlock_ud;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 149 }
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 150
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 151 socket = sockfd_lookup(sockfd, &err);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 152 if (!socket) {
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 153 dev_err(dev, "failed to lookup sock");
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 154 ret = -EINVAL;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 155 goto unlock_ud;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 156 }
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 157
d5708a353836ac Shuah Khan 2021-03-07 158 if (socket->type != SOCK_STREAM) {
d5708a353836ac Shuah Khan 2021-03-07 159 dev_err(dev, "Expecting SOCK_STREAM - found %d",
d5708a353836ac Shuah Khan 2021-03-07 160 socket->type);
d5708a353836ac Shuah Khan 2021-03-07 161 ret = -EINVAL;
d5708a353836ac Shuah Khan 2021-03-07 162 goto sock_err;
d5708a353836ac Shuah Khan 2021-03-07 163 }
d5708a353836ac Shuah Khan 2021-03-07 164
fe9e15a30be666 Shuah Khan 2021-03-07 165 /* unlock and create threads and get tasks */
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 166 spin_unlock_irq(&udc->ud.lock);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 167 spin_unlock_irqrestore(&udc->lock, flags);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 168
fe9e15a30be666 Shuah Khan 2021-03-07 169 tcp_rx = kthread_create(&v_rx_loop, &udc->ud, "vudc_rx");
fe9e15a30be666 Shuah Khan 2021-03-07 170 if (IS_ERR(tcp_rx)) {
fe9e15a30be666 Shuah Khan 2021-03-07 171 sockfd_put(socket);
fe9e15a30be666 Shuah Khan 2021-03-07 172 return -EINVAL;
fe9e15a30be666 Shuah Khan 2021-03-07 173 }
fe9e15a30be666 Shuah Khan 2021-03-07 174 tcp_tx = kthread_create(&v_tx_loop, &udc->ud, "vudc_tx");
fe9e15a30be666 Shuah Khan 2021-03-07 175 if (IS_ERR(tcp_tx)) {
fe9e15a30be666 Shuah Khan 2021-03-07 176 kthread_stop(tcp_rx);
fe9e15a30be666 Shuah Khan 2021-03-07 177 sockfd_put(socket);
fe9e15a30be666 Shuah Khan 2021-03-07 178 return -EINVAL;
fe9e15a30be666 Shuah Khan 2021-03-07 179 }
fe9e15a30be666 Shuah Khan 2021-03-07 180
fe9e15a30be666 Shuah Khan 2021-03-07 181 /* get task structs now */
fe9e15a30be666 Shuah Khan 2021-03-07 182 get_task_struct(tcp_rx);
fe9e15a30be666 Shuah Khan 2021-03-07 183 get_task_struct(tcp_tx);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 184
fe9e15a30be666 Shuah Khan 2021-03-07 185 /* lock and update udc->ud state */
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 186 spin_lock_irqsave(&udc->lock, flags);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 187 spin_lock_irq(&udc->ud.lock);
fe9e15a30be666 Shuah Khan 2021-03-07 188
fe9e15a30be666 Shuah Khan 2021-03-07 189 udc->ud.tcp_socket = socket;
fe9e15a30be666 Shuah Khan 2021-03-07 190 udc->ud.tcp_rx = tcp_rx;
e957ba13608a1a Colin Ian King 2021-03-11 191 udc->ud.tcp_tx = tcp_tx;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 192 udc->ud.status = SDEV_ST_USED;
fe9e15a30be666 Shuah Khan 2021-03-07 193
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 194 spin_unlock_irq(&udc->ud.lock);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 195
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 196 do_gettimeofday(&udc->start_time);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 197 v_start_timer(udc);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 198 udc->connected = 1;
fe9e15a30be666 Shuah Khan 2021-03-07 199
fe9e15a30be666 Shuah Khan 2021-03-07 200 spin_unlock_irqrestore(&udc->lock, flags);
fe9e15a30be666 Shuah Khan 2021-03-07 201
fe9e15a30be666 Shuah Khan 2021-03-07 202 wake_up_process(udc->ud.tcp_rx);
fe9e15a30be666 Shuah Khan 2021-03-07 203 wake_up_process(udc->ud.tcp_tx);
117246f8e1e52f Shuah Khan 2021-04-16 204
117246f8e1e52f Shuah Khan 2021-04-16 205 mutex_unlock(&udc->ud.sysfs_lock);
fe9e15a30be666 Shuah Khan 2021-03-07 206 return count;
fe9e15a30be666 Shuah Khan 2021-03-07 207
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 208 } else {
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 209 if (!udc->connected) {
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 210 dev_err(dev, "Device not connected");
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 211 ret = -EINVAL;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 212 goto unlock;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 213 }
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 214
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 215 spin_lock_irq(&udc->ud.lock);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 216 if (udc->ud.status != SDEV_ST_USED) {
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 217 ret = -EINVAL;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 218 goto unlock_ud;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 219 }
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 220 spin_unlock_irq(&udc->ud.lock);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 221
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 222 usbip_event_add(&udc->ud, VUDC_EVENT_DOWN);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 223 }
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 224
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 225 spin_unlock_irqrestore(&udc->lock, flags);
117246f8e1e52f Shuah Khan 2021-04-16 226 mutex_unlock(&udc->ud.sysfs_lock);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 227
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 228 return count;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 229
d5708a353836ac Shuah Khan 2021-03-07 230 sock_err:
d5708a353836ac Shuah Khan 2021-03-07 231 sockfd_put(socket);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 232 unlock_ud:
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 233 spin_unlock_irq(&udc->ud.lock);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 234 unlock:
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 235 spin_unlock_irqrestore(&udc->lock, flags);
117246f8e1e52f Shuah Khan 2021-04-16 236 mutex_unlock(&udc->ud.sysfs_lock);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 237
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 @238 return ret;
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 239 }
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 240 static DEVICE_ATTR(usbip_sockfd, S_IWUSR, NULL, store_sockfd);
ea6873a45a22f3 Igor Kotrasinski 2016-03-08 241
:::::: The code at line 238 was first introduced by commit
:::::: ea6873a45a22f35c8ab0f9c025df6a6c6dd532f3 usbip: vudc: Add SysFS infrastructure for VUDC
:::::: TO: Igor Kotrasinski <i.kotrasinsk@samsung.com>
:::::: CC: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 20828 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2021-04-28 10:50 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-04-28 10:50 [sashal-linux-stable:queue-4.9 26/29] drivers/usb/usbip/vudc_sysfs.c:238 store_sockfd() warn: inconsistent returns '&udc->ud.sysfs_lock' Dan Carpenter
2021-04-28 10:50 ` Dan Carpenter
-- strict thread matches above, loose matches on Subject: below --
2021-04-25 19:07 kernel test robot
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.