Commit be23edf8 authored by Andrew Morton's avatar Andrew Morton Committed by Greg Kroah-Hartman
Browse files

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: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent fcbd9639
Loading
Loading
Loading
Loading
+2 −8
Original line number Diff line number Diff line
@@ -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 */