mirror of
https://github.com/adulau/aha.git
synced 2024-12-29 04:06:22 +00:00
USB: auerswald: fix file release handler
If this down_interruptible() does fail due to signal_pending() then the state of the driver will get trashed in interesting ways, because userspace cannot and will not retry the close(). Cc: Jiri Slaby <jirislaby@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
fcbd963912
commit
be23edf848
1 changed files with 2 additions and 8 deletions
|
@ -1822,16 +1822,10 @@ static int auerchar_release (struct inode *inode, struct file *file)
|
|||
pauerswald_t cp;
|
||||
dbg("release");
|
||||
|
||||
/* get the mutexes */
|
||||
if (down_interruptible (&ccp->mutex)) {
|
||||
return -ERESTARTSYS;
|
||||
}
|
||||
down(&ccp->mutex);
|
||||
cp = ccp->auerdev;
|
||||
if (cp) {
|
||||
if (down_interruptible (&cp->mutex)) {
|
||||
up (&ccp->mutex);
|
||||
return -ERESTARTSYS;
|
||||
}
|
||||
down(&cp->mutex);
|
||||
/* remove an open service */
|
||||
auerswald_removeservice (cp, &ccp->scontext);
|
||||
/* detach from device */
|
||||
|
|
Loading…
Reference in a new issue