mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-17 13:58:46 +00:00
tty: Export redirect release
This will be required by the pty code when it removes tty_vhangup() on master close. Signed-off-by: Corey Minyard <cminyard@mvista.com> Link: https://lore.kernel.org/r/20201124004902.1398477-2-minyard@acm.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
c31c3ea02e
commit
f446776ebf
@ -540,6 +540,28 @@ void tty_wakeup(struct tty_struct *tty)
|
||||
|
||||
EXPORT_SYMBOL_GPL(tty_wakeup);
|
||||
|
||||
/**
|
||||
* tty_release_redirect - Release a redirect on a pty if present
|
||||
* @tty: tty device
|
||||
*
|
||||
* This is available to the pty code so if the master closes, if the
|
||||
* slave is a redirect it can release the redirect.
|
||||
*/
|
||||
struct file *tty_release_redirect(struct tty_struct *tty)
|
||||
{
|
||||
struct file *f = NULL;
|
||||
|
||||
spin_lock(&redirect_lock);
|
||||
if (redirect && file_tty(redirect) == tty) {
|
||||
f = redirect;
|
||||
redirect = NULL;
|
||||
}
|
||||
spin_unlock(&redirect_lock);
|
||||
|
||||
return f;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(tty_release_redirect);
|
||||
|
||||
/**
|
||||
* __tty_hangup - actual handler for hangup events
|
||||
* @tty: tty device
|
||||
@ -566,7 +588,7 @@ EXPORT_SYMBOL_GPL(tty_wakeup);
|
||||
static void __tty_hangup(struct tty_struct *tty, int exit_session)
|
||||
{
|
||||
struct file *cons_filp = NULL;
|
||||
struct file *filp, *f = NULL;
|
||||
struct file *filp, *f;
|
||||
struct tty_file_private *priv;
|
||||
int closecount = 0, n;
|
||||
int refs;
|
||||
@ -574,13 +596,7 @@ static void __tty_hangup(struct tty_struct *tty, int exit_session)
|
||||
if (!tty)
|
||||
return;
|
||||
|
||||
|
||||
spin_lock(&redirect_lock);
|
||||
if (redirect && file_tty(redirect) == tty) {
|
||||
f = redirect;
|
||||
redirect = NULL;
|
||||
}
|
||||
spin_unlock(&redirect_lock);
|
||||
f = tty_release_redirect(tty);
|
||||
|
||||
tty_lock(tty);
|
||||
|
||||
|
@ -421,6 +421,7 @@ extern void tty_kclose(struct tty_struct *tty);
|
||||
extern int tty_dev_name_to_number(const char *name, dev_t *number);
|
||||
extern int tty_ldisc_lock(struct tty_struct *tty, unsigned long timeout);
|
||||
extern void tty_ldisc_unlock(struct tty_struct *tty);
|
||||
extern struct file *tty_release_redirect(struct tty_struct *tty);
|
||||
#else
|
||||
static inline void tty_kref_put(struct tty_struct *tty)
|
||||
{ }
|
||||
|
Loading…
x
Reference in New Issue
Block a user