diff options
author | Andy Shevchenko <andriy.shevchenko@linux.intel.com> | 2013-05-22 06:20:10 -0400 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2013-05-30 13:30:44 -0400 |
commit | aeb168f77c745fa4964e217400c9d43685e46705 (patch) | |
tree | 57e85aefc9c9fc27f9a5f0579fe94d48e91954fe | |
parent | 2b861f4b2b4787772b4f508c8cdfa492a01a60db (diff) |
gpio-langwell: initialize lock before usage
Otherwise we will end up with traceback from LOCKDEP:
INFO: trying to register non-static key.
the code is fine but needs lockdep annotation.
turning off the locking correctness validator.
CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.10.0-rc2-next-20130521-00028-g09aa9fc #487
00000000 00000000 f6c55c54 c1541fe4 f6040bf8 f6c55c8c c1069ef1 c1726bc1
c1726cc8 c1726c9e 00000000 f6c584e0 f6c58000 f6c55ce8 00000000 f6040bf8
f6040bf8 00000046 f6c58000 f6c55d00 c106a18d 00000a2b 00000003 00004f02
Call Trace:
[<c1541fe4>] dump_stack+0x49/0x77
[<c1069ef1>] register_lock_class+0x58/0x260
[<c106a18d>] __lock_acquire+0x94/0xcff
[<c106adc8>] ? __lock_acquire+0xccf/0xcff
[<c106b2ad>] lock_acquire+0xcc/0x10d
[<c1269c7c>] ? lnw_irq_type+0x63/0xe9
[<c1545da0>] _raw_spin_lock_irqsave+0x32/0x42
[<c1269c7c>] ? lnw_irq_type+0x63/0xe9
[<c1269c7c>] lnw_irq_type+0x63/0xe9
[<c108f454>] __irq_set_trigger+0x98/0x123
[<c1090225>] irq_set_irq_type+0x2f/0x51
[<c1090225>] ? irq_set_irq_type+0x2f/0x51
[<c1269d02>] ? lnw_irq_type+0xe9/0xe9
[<c1269d34>] lnw_gpio_irq_map+0x32/0x3b
[<c10914f2>] irq_domain_add_legacy+0xe2/0x107
[<c1091b53>] irq_domain_add_simple+0x47/0x60
[<c1269f6e>] lnw_gpio_probe+0x119/0x217
[<c1271018>] pci_device_probe+0x5a/0x92
...
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Acked-by: David Cohen <david.a.cohen@intel.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
-rw-r--r-- | drivers/gpio/gpio-langwell.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/gpio/gpio-langwell.c b/drivers/gpio/gpio-langwell.c index b8a5729ca4f6..a0190de14371 100644 --- a/drivers/gpio/gpio-langwell.c +++ b/drivers/gpio/gpio-langwell.c | |||
@@ -380,6 +380,8 @@ static int lnw_gpio_probe(struct pci_dev *pdev, | |||
380 | lnw->chip.can_sleep = 0; | 380 | lnw->chip.can_sleep = 0; |
381 | lnw->pdev = pdev; | 381 | lnw->pdev = pdev; |
382 | 382 | ||
383 | spin_lock_init(&lnw->lock); | ||
384 | |||
383 | lnw->domain = irq_domain_add_simple(pdev->dev.of_node, ngpio, irq_base, | 385 | lnw->domain = irq_domain_add_simple(pdev->dev.of_node, ngpio, irq_base, |
384 | &lnw_gpio_irq_ops, lnw); | 386 | &lnw_gpio_irq_ops, lnw); |
385 | if (!lnw->domain) { | 387 | if (!lnw->domain) { |
@@ -399,8 +401,6 @@ static int lnw_gpio_probe(struct pci_dev *pdev, | |||
399 | irq_set_handler_data(pdev->irq, lnw); | 401 | irq_set_handler_data(pdev->irq, lnw); |
400 | irq_set_chained_handler(pdev->irq, lnw_irq_handler); | 402 | irq_set_chained_handler(pdev->irq, lnw_irq_handler); |
401 | 403 | ||
402 | spin_lock_init(&lnw->lock); | ||
403 | |||
404 | pm_runtime_put_noidle(&pdev->dev); | 404 | pm_runtime_put_noidle(&pdev->dev); |
405 | pm_runtime_allow(&pdev->dev); | 405 | pm_runtime_allow(&pdev->dev); |
406 | 406 | ||