All of lore.kernel.org
 help / color / mirror / Atom feed
From: bugzilla-daemon@bugzilla.kernel.org
To: dri-devel@lists.freedesktop.org
Subject: [Bug 83341] New: Failure to check return value leads to missed -EDEADLK and a kernel warning printout
Date: Wed, 27 Aug 2014 14:23:16 +0000	[thread overview]
Message-ID: <bug-83341-2300@https.bugzilla.kernel.org/> (raw)

https://bugzilla.kernel.org/show_bug.cgi?id=83341

            Bug ID: 83341
           Summary: Failure to check return value leads to missed -EDEADLK
                    and a kernel warning printout
           Product: Drivers
           Version: 2.5
    Kernel Version: 3.16 and above
          Hardware: All
                OS: Linux
              Tree: Mainline
            Status: NEW
          Severity: normal
          Priority: P1
         Component: Video(DRI - non Intel)
          Assignee: drivers_video-dri@kernel-bugs.osdl.org
          Reporter: thellstrom@vmware.com
        Regression: No

Please see 

https://bugzilla.redhat.com/show_bug.cgi?id=1114160

The error is in the following lines, where no error checking takes place on
drm_modeset_lock().

    drm_modeset_lock_all(dev);
    drm_modeset_lock_init(&crtc->mutex);
    /* dropped by _unlock_all(): */
    drm_modeset_lock(&crtc->mutex, config->acquire_ctx);

This is probably under the assumption that the lock is just initialized and
will therefore always succeed. However, the ww_mutex subsystem has a fault
injection option and when that kicks in, that lock may fail.

Fixing this turns out to be a little involved. Personally I think a trylock()
would be in order here, but that would mean extending the drm_modeset_lock()
API.

The error message copied from Redhat Bugzilla:

[    5.082609] ------------[ cut here ]------------
[    5.083548] WARNING: CPU: 0 PID: 369 at
drivers/gpu/drm/drm_modeset_lock.c:91 drm_modeset_drop_locks+0x71/0x80 [drm]()
[    5.084483] Modules linked in: vmwgfx(+) drm_kms_helper ttm drm mptspi
scsi_transport_spi e1000 mptscsih mptbase i2c_core ata_generic pata_acpi
[    5.085536] CPU: 0 PID: 369 Comm: systemd-udevd Not tainted
3.16.0-0.rc2.git3.1.fc21.x86_64 #1
[    5.086689] Hardware name: VMware, Inc. VMware Virtual Platform/440BX
Desktop Reference Platform, BIOS 6.00 07/31/2013
[    5.088693]  0000000000000000 0000000054dc8e0c ffff880036e27910
ffffffff81807c4c
[    5.090714]  0000000000000000 ffff880036e27948 ffffffff8109b3ed
ffff880039073000
[    5.091584]  ffff8800391ee900 ffff8800391ee900 ffff88003890fe00
ffff880000400000
[    5.092662] Call Trace:
[    5.093311]  [<ffffffff81807c4c>] dump_stack+0x4d/0x66
[    5.093867]  [<ffffffff8109b3ed>] warn_slowpath_common+0x7d/0xa0
[    5.094562]  [<ffffffff8109b51a>] warn_slowpath_null+0x1a/0x20
[    5.095241]  [<ffffffffa00a8eb1>] drm_modeset_drop_locks+0x71/0x80 [drm]
[    5.095773]  [<ffffffffa009996e>] drm_modeset_unlock_all+0x2e/0x70 [drm]
[    5.096196]  [<ffffffffa009b557>] drm_crtc_init_with_planes+0xa7/0x110 [drm]
[    5.096659]  [<ffffffffa00d7343>] drm_crtc_init+0x33/0x40 [drm_kms_helper]
[    5.097050]  [<ffffffffa01135b9>]
vmw_kms_init_screen_object_display+0x1a9/0x260 [vmwgfx]
[    5.098174]  [<ffffffffa0105b69>] vmw_kms_init+0x59/0x70 [vmwgfx]
[    5.098725]  [<ffffffffa0107dd0>] vmw_driver_load+0x8d0/0xda0 [vmwgfx]
[    5.099129]  [<ffffffffa009424d>] drm_dev_register+0xad/0x100 [drm]
[    5.099486]  [<ffffffffa009707d>] drm_get_pci_dev+0x8d/0x200 [drm]
[    5.099900]  [<ffffffffa0106b25>] vmw_probe+0x15/0x20 [vmwgfx]
[    5.100274]  [<ffffffff8142fee5>] local_pci_probe+0x45/0xa0
[    5.100626]  [<ffffffff814311c5>] ? pci_match_device+0xe5/0x110
[    5.100959]  [<ffffffff81431329>] pci_device_probe+0xf9/0x150
[    5.101286]  [<ffffffff8151fba3>] driver_probe_device+0xa3/0x400
[    5.101589]  [<ffffffff8151ffcb>] __driver_attach+0x8b/0x90
[    5.101934]  [<ffffffff8151ff40>] ? __device_attach+0x40/0x40
[    5.102242]  [<ffffffff8151d823>] bus_for_each_dev+0x73/0xc0
[    5.102545]  [<ffffffff8151f5fe>] driver_attach+0x1e/0x20
[    5.102808]  [<ffffffff8151f1c8>] bus_add_driver+0x188/0x260
[    5.103075]  [<ffffffff81520aa4>] driver_register+0x64/0xf0
[    5.103352]  [<ffffffff8142f790>] __pci_register_driver+0x60/0x70
[    5.103616]  [<ffffffffa00972fa>] drm_pci_init+0x10a/0x140 [drm]
[    5.103913]  [<ffffffffa012e000>] ? 0xffffffffa012dfff
[    5.104176]  [<ffffffffa012e018>] vmwgfx_init+0x18/0x1000 [vmwgfx]
[    5.104482]  [<ffffffff81002148>] do_one_initcall+0xd8/0x210
[    5.104745]  [<ffffffff81206e8a>] ? __vunmap+0xba/0x120
[    5.105015]  [<ffffffff8113aff0>] load_module+0x2110/0x2740
[    5.105275]  [<ffffffff81136260>] ? store_uevent+0x70/0x70
[    5.105551]  [<ffffffff810fc23f>] ? lock_release_holdtime.part.28+0xf/0x200
[    5.105951]  [<ffffffff811025e6>] ? lock_release_non_nested+0x3c6/0x3d0
[    5.106357]  [<ffffffff8113b707>] SyS_init_module+0xe7/0x140
[    5.106849]  [<ffffffff81811869>] system_call_fastpath+0x16/0x1b
[    5.107162] ---[ end trace 225f20829bb0d8e8 ]---

-- 
You are receiving this mail because:
You are watching the assignee of the bug.

                 reply	other threads:[~2014-08-27 14:23 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-83341-2300@https.bugzilla.kernel.org/ \
    --to=bugzilla-daemon@bugzilla.kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.