diff options
Diffstat (limited to 'drivers/tty')
| -rw-r--r-- | drivers/tty/vt/vc_screen.c | 6 | 
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/tty/vt/vc_screen.c b/drivers/tty/vt/vc_screen.c index e4ca345873c..d7799deacb2 100644 --- a/drivers/tty/vt/vc_screen.c +++ b/drivers/tty/vt/vc_screen.c @@ -93,7 +93,7 @@ vcs_poll_data_free(struct vcs_poll_data *poll)  static struct vcs_poll_data *  vcs_poll_data_get(struct file *file)  { -	struct vcs_poll_data *poll = file->private_data; +	struct vcs_poll_data *poll = file->private_data, *kill = NULL;  	if (poll)  		return poll; @@ -122,10 +122,12 @@ vcs_poll_data_get(struct file *file)  		file->private_data = poll;  	} else {  		/* someone else raced ahead of us */ -		vcs_poll_data_free(poll); +		kill = poll;  		poll = file->private_data;  	}  	spin_unlock(&file->f_lock); +	if (kill) +		vcs_poll_data_free(kill);  	return poll;  }  |