Skip to content

Commit

Permalink
Revert "tty: hvc: Fix data abort due to race in hvc_open"
Browse files Browse the repository at this point in the history
This reverts commit e2bd1dc.

In discussion on the mailing list, it has been determined that this is
not the correct type of fix for this issue.  Revert it so that we can do
this correctly.

Reported-by: Jiri Slaby <jslaby@suse.cz>
Reported-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Link: https://lore.kernel.org/r/20200428032601.22127-1-rananta@codeaurora.org
Cc: Raghavendra Rao Ananta <rananta@codeaurora.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Greg Kroah-Hartman committed May 12, 2020
1 parent 1cc1858 commit cf9c944
Showing 1 changed file with 2 additions and 14 deletions.
16 changes: 2 additions & 14 deletions drivers/tty/hvc/hvc_console.c
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,6 @@ static LIST_HEAD(hvc_structs);
*/
static DEFINE_MUTEX(hvc_structs_mutex);

/* Mutex to serialize hvc_open */
static DEFINE_MUTEX(hvc_open_mutex);
/*
* This value is used to assign a tty->index value to a hvc_struct based
* upon order of exposure via hvc_probe(), when we can not match it to
Expand Down Expand Up @@ -348,24 +346,16 @@ static int hvc_install(struct tty_driver *driver, struct tty_struct *tty)
*/
static int hvc_open(struct tty_struct *tty, struct file * filp)
{
struct hvc_struct *hp;
struct hvc_struct *hp = tty->driver_data;
unsigned long flags;
int rc = 0;

mutex_lock(&hvc_open_mutex);

hp = tty->driver_data;
if (!hp) {
rc = -EIO;
goto out;
}

spin_lock_irqsave(&hp->port.lock, flags);
/* Check and then increment for fast path open. */
if (hp->port.count++ > 0) {
spin_unlock_irqrestore(&hp->port.lock, flags);
hvc_kick();
goto out;
return 0;
} /* else count == 0 */
spin_unlock_irqrestore(&hp->port.lock, flags);

Expand Down Expand Up @@ -394,8 +384,6 @@ static int hvc_open(struct tty_struct *tty, struct file * filp)
/* Force wakeup of the polling thread */
hvc_kick();

out:
mutex_unlock(&hvc_open_mutex);
return rc;
}

Expand Down

0 comments on commit cf9c944

Please sign in to comment.