usblp: mutex in usblp_check_status
Add a mutex to protect the ->statusbuf. Not really an issue, because CUPS is single-threaded when it talks to the printer, but I feel safer this way. This should be deadlock-free, but I kept this as a separate patch in case someone ends running a git bisect. Signed-off-by: Pete Zaitcev <zaitcev@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
7b5cd5fefb
commit
fc401e697f
@ -345,16 +345,17 @@ static int usblp_check_status(struct usblp *usblp, int err)
|
||||
unsigned char status, newerr = 0;
|
||||
int error;
|
||||
|
||||
error = usblp_read_status (usblp, usblp->statusbuf);
|
||||
if (error < 0) {
|
||||
mutex_lock(&usblp->mut);
|
||||
if ((error = usblp_read_status(usblp, usblp->statusbuf)) < 0) {
|
||||
mutex_unlock(&usblp->mut);
|
||||
if (printk_ratelimit())
|
||||
printk(KERN_ERR
|
||||
"usblp%d: error %d reading printer status\n",
|
||||
usblp->minor, error);
|
||||
return 0;
|
||||
}
|
||||
|
||||
status = *usblp->statusbuf;
|
||||
mutex_unlock(&usblp->mut);
|
||||
|
||||
if (~status & LP_PERRORP)
|
||||
newerr = 3;
|
||||
|
Loading…
x
Reference in New Issue
Block a user