diff options
author | Jean Delvare <jdelvare@suse.de> | 2014-02-25 12:43:13 +0400 |
---|---|---|
committer | Borislav Petkov <bp@suse.de> | 2014-02-25 12:43:13 +0400 |
commit | 75135da0d68419ef8a925f4c1d5f63d8046e314d (patch) | |
tree | db9f21d3b0131bcd7c23c510852ad4143a44f1a4 /lib/debug_locks.c | |
parent | c0f5eeed0f4cef4f05b74883a7160e7edde58b6a (diff) | |
download | linux-75135da0d68419ef8a925f4c1d5f63d8046e314d.tar.xz |
i7300_edac: Fix device reference count
pci_get_device() decrements the reference count of "from" (last
argument) so when we break off the loop successfully we have only one
device reference - and we don't know which device we have. If we want
a reference to each device, we must take them explicitly and let
the pci_get_device() walk complete to avoid duplicate references.
This is serious, as over-putting device references will cause
the device to eventually disappear. Without this fix, the kernel
crashes after a few insmod/rmmod cycles.
Tested on an Intel S7000FC4UR system with a 7300 chipset.
Signed-off-by: Jean Delvare <jdelvare@suse.de>
Link: http://lkml.kernel.org/r/20140224111656.09bbb7ed@endymion.delvare
Cc: Mauro Carvalho Chehab <m.chehab@samsung.com>
Cc: Doug Thompson <dougthompson@xmission.com>
Cc: stable@vger.kernel.org
Signed-off-by: Borislav Petkov <bp@suse.de>
Diffstat (limited to 'lib/debug_locks.c')
0 files changed, 0 insertions, 0 deletions