Possible bug in cypress_m8.ko

From: Anton Volkov
Date: Tue Aug 22 2017 - 08:11:32 EST


Hello.

Judging by the code of cypress_m8.c some functions are considered to be capable of working concurrently with other functions, e.g. cypress_open.
There are, however, entities that are protected by the locks at one place and not protected in another. Lines are given using the info from Linux kernel v4.12. Example:

cypress_send
spin_lock_irqsave
priv->write_urb_in_use = 1;
spin_lock_irqrestore
(cypress_m8.c: lines 761-763)
...
if (result) {
priv->write_urb_in_use = 0; //without lock protection
(cypress_m8.c: line 783)
}

Is it a bug?

Thank you for your time.

-- Anton Volkov
Linux Verification Center, ISPRAS
web: http://linuxtesting.org
e-mail: avolkov@xxxxxxxxx