aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Hurley <peter@hurleysoftware.com>2015-11-08 13:01:12 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-12-13 19:59:48 -0800
commit0a083eddae33b6e20234d05a9cf54f87b0095511 (patch)
treeeb2487f1492031b4947f3e38f7a768524911d0d6
parenttty: core: Remove redundant oom message (diff)
downloadlinux-dev-0a083eddae33b6e20234d05a9cf54f87b0095511.tar.xz
linux-dev-0a083eddae33b6e20234d05a9cf54f87b0095511.zip
tty: core: Add helper fn to deref tty driver name
Similar to tty_name(), add tty_driver_name() helper to safely dereference tty->driver->name (otherwise return empty string). Signed-off-by: Peter Hurley <peter@hurleysoftware.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/tty/tty_io.c7
-rw-r--r--include/linux/tty.h1
2 files changed, 8 insertions, 0 deletions
diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c
index 336714cf370a..ef8ee34670c3 100644
--- a/drivers/tty/tty_io.c
+++ b/drivers/tty/tty_io.c
@@ -256,6 +256,13 @@ const char *tty_name(const struct tty_struct *tty)
EXPORT_SYMBOL(tty_name);
+const char *tty_driver_name(const struct tty_struct *tty)
+{
+ if (!tty || !tty->driver)
+ return "";
+ return tty->driver->name;
+}
+
static int tty_paranoia_check(struct tty_struct *tty, struct inode *inode,
const char *routine)
{
diff --git a/include/linux/tty.h b/include/linux/tty.h
index 0532465ea142..a9c1af990da9 100644
--- a/include/linux/tty.h
+++ b/include/linux/tty.h
@@ -420,6 +420,7 @@ static inline struct tty_struct *tty_kref_get(struct tty_struct *tty)
}
extern const char *tty_name(const struct tty_struct *tty);
+extern const char *tty_driver_name(const struct tty_struct *tty);
extern void tty_wait_until_sent(struct tty_struct *tty, long timeout);
extern int __tty_check_change(struct tty_struct *tty, int sig);
extern int tty_check_change(struct tty_struct *tty);