diff options
author | 2019-04-03 09:13:34 +0200 | |
---|---|---|
committer | 2019-04-10 17:46:22 +0200 | |
commit | 5712f3301a12c0c3de9cc423484496b0464f2faf (patch) | |
tree | 908924352bac4ef16da0c73609b365a4ff3dac1e /drivers/s390/char/tty3270.c | |
parent | s390/dasd: Fix capacity calculation for large volumes (diff) | |
download | linux-5712f3301a12c0c3de9cc423484496b0464f2faf.tar.gz linux-5712f3301a12c0c3de9cc423484496b0464f2faf.tar.bz2 linux-5712f3301a12c0c3de9cc423484496b0464f2faf.zip |
s390/3270: fix lockdep false positive on view->lock
The spinlock in the raw3270_view structure is used by con3270, tty3270
and fs3270 in different ways. For con3270 the lock can be acquired in
irq context, for tty3270 and fs3270 the highest context is bh.
Lockdep sees the view->lock as a single class and if the 3270 driver
is used for the console the following message is generated:
WARNING: inconsistent lock state
5.1.0-rc3-05157-g5c168033979d #12 Not tainted
--------------------------------
inconsistent {IN-HARDIRQ-W} -> {HARDIRQ-ON-W} usage.
swapper/0/1 [HC0[0]:SC1[1]:HE1:SE0] takes:
(____ptrval____) (&(&view->lock)->rlock){?.-.}, at: tty3270_update+0x7c/0x330
Introduce a lockdep subclass for the view lock to distinguish bh from
irq locks.
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers/s390/char/tty3270.c')
-rw-r--r-- | drivers/s390/char/tty3270.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/s390/char/tty3270.c b/drivers/s390/char/tty3270.c index 2b0c36c2c568..98d7fc152e32 100644 --- a/drivers/s390/char/tty3270.c +++ b/drivers/s390/char/tty3270.c @@ -980,7 +980,8 @@ static int tty3270_install(struct tty_driver *driver, struct tty_struct *tty) return PTR_ERR(tp); rc = raw3270_add_view(&tp->view, &tty3270_fn, - tty->index + RAW3270_FIRSTMINOR); + tty->index + RAW3270_FIRSTMINOR, + RAW3270_VIEW_LOCK_BH); if (rc) { tty3270_free_view(tp); return rc; |