linux/drivers
Doug Anderson ab3bd64bdd pinctrl: Don't just pretend to protect pinctrl_maps, do it for real
commit c5272a2856 upstream.

Way back, when the world was a simpler place and there was no war, no
evil, and no kernel bugs, there was just a single pinctrl lock.  That
was how the world was when (57291ce pinctrl: core device tree mapping
table parsing support) was written.  In that case, there were
instances where the pinctrl mutex was already held when
pinctrl_register_map() was called, hence a "locked" parameter was
passed to the function to indicate that the mutex was already locked
(so we shouldn't lock it again).

A few years ago in (42fed7b pinctrl: move subsystem mutex to
pinctrl_dev struct), we switched to a separate pinctrl_maps_mutex.
...but (oops) we forgot to re-think about the whole "locked" parameter
for pinctrl_register_map().  Basically the "locked" parameter appears
to still refer to whether the bigger pinctrl_dev mutex is locked, but
we're using it to skip locks of our (now separate) pinctrl_maps_mutex.

That's kind of a bad thing(TM).  Probably nobody noticed because most
of the calls to pinctrl_register_map happen at boot time and we've got
synchronous device probing.  ...and even cases where we're
asynchronous don't end up actually hitting the race too often.  ...but
after banging my head against the wall for a bug that reproduced 1 out
of 1000 reboots and lots of looking through kgdb, I finally noticed
this.

Anyway, we can now safely remove the "locked" parameter and go back to
a war-free, evil-free, and kernel-bug-free world.

Fixes: 42fed7ba44 ("pinctrl: move subsystem mutex to pinctrl_dev struct")
Signed-off-by: Doug Anderson <dianders@chromium.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
History 2015-05-20 13:26:16 +01:00
..
accessibility printk: move braille console support into separate braille.[ch] files 2013-07-31 14:41:03 -07:00
acpi ACPI / PNP: add two IDs to list for PNPACPI device enumeration 2015-05-20 13:26:02 +01:00
amba ARM: SoC: driver changes 2014-04-05 15:37:40 -07:00
ata ahci_xgene: Fix the endianess issue in APM X-Gene SoC AHCI SATA controller driver. 2015-02-04 10:58:28 +00:00
atm atm: fore200e.c: Cleaning up uninitialized variables 2014-06-02 17:11:03 -07:00
auxdisplay framebuffer: Use fb_<level> 2013-10-29 12:53:07 +02:00
base driver core: bus: Goto appropriate labels on failure in bus_add_device 2015-05-06 11:33:02 +01:00
bcma bcma: gpio: register 32 GPIOs on BCM5357 2014-03-27 14:20:04 -04:00
block rbd: end I/O the entire obj_request on error 2015-05-12 09:36:39 +01:00
bluetooth Bluetooth: ath3k: Add support Atheros AR5B195 combo Mini PCIe card 2015-05-04 16:06:35 +01:00
bus bus: omap_l3_noc: Correct returning IRQ_HANDLED unconditionally in the irq handler 2015-02-04 10:57:52 +00:00
cdrom Merge branch 'for-linus' of git://git.kernel.dk/linux-block 2014-06-11 08:41:17 -07:00
char virtio_console: avoid config access from irq 2015-03-30 11:10:55 +01:00
clk clk: qcom: fix RCG M/N counter configuration 2015-05-06 11:33:01 +01:00
clocksource clockevents: sun5i: Fix setup_irq init sequence 2015-03-30 11:10:59 +01:00
connector Char / misc driver patches for 3.16-rc1 2014-06-03 08:06:56 -07:00
cpufreq cpufreq: fix a NULL pointer dereference in __cpufreq_governor() 2015-05-06 11:33:11 +01:00
cpuidle cpuidle: remove state_count field from struct cpuidle_device 2015-04-27 16:16:34 +01:00
crypto crypto: omap-aes - Fix support for unequal lengths 2015-05-06 11:33:03 +01:00
dca dca: convert to idr_alloc() 2013-02-27 19:10:15 -08:00
devfreq PM / devfreq: remove checks for CONFIG_EXYNOS_ASV 2014-05-24 22:33:51 +09:00
dio m68k: don't export static inline functions 2009-12-06 11:18:28 +01:00
dma dmaengine: omap-dma: Fix memory leak when terminating running transfer 2015-04-13 16:48:59 +01:00
edac sb_edac: avoid INTERNAL ERROR message in EDAC with unspecified channel 2015-04-21 11:54:45 +01:00
eisa Revert "EISA: Initialize device before its resources" 2014-01-17 14:57:29 -07:00
extcon extcon: palmas: Use devm_extcon_dev_allocate for extcon_dev 2014-04-29 09:52:12 +09:00
firewire firewire: cdev: prevent kernel stack leaking into ioctl arguments 2014-11-27 11:21:52 +00:00
firmware efi: Fix error handling in add_sysfs_runtime_map_entry() 2015-05-20 13:26:05 +01:00
fmc Merge 3.14-rc5 into char-misc-next 2014-03-02 19:53:09 -08:00
gpio gpio: sysfs: fix memory leaks and device hotplug 2015-05-20 13:26:01 +01:00
gpu drm/radeon: more strictly validate the UVD codec 2015-05-20 13:26:11 +01:00
hid HID: add quirk for PIXART OEM mouse used by HP 2015-05-05 11:09:33 +01:00
hsi hsi: omap_ssi_port: use normal module refcounting 2014-06-05 00:59:05 +02:00
hv Drivers: hv: vmbus: Don't wait after requesting offers 2015-05-05 11:09:38 +01:00
hwmon hwmon: (ds1621) Update zbits after conversion rate change 2014-10-05 13:41:06 -07:00
hwspinlock A single patch from Vincent extending OMAP's hwspinlock support to OMAP5. 2013-05-07 14:01:27 -07:00
i2c Revert "i2c: Mark adapter devices with pm_runtime_no_callbacks" 2015-05-18 11:03:21 +01:00
ide Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide 2014-07-21 22:44:24 -07:00
idle intel_idle: fix IVT idle state table setting 2014-04-21 23:36:07 +02:00
iio iio: imu: Use iio_trigger_get for indio_dev->trig assignment 2015-04-13 16:48:58 +01:00
infiniband RDMA/CMA: Canonize IPv4 on IPV6 sockets properly 2015-05-20 13:26:04 +01:00
input Input: elantech - add more Fujtisu notebooks to force crc_enabled 2015-05-06 11:33:13 +01:00
iommu iommu/vt-d: Fix an off-by-one bug in __domain_mapping() 2015-01-12 15:44:11 +00:00
ipack ipack: convert bus code to use dev_groups 2013-10-16 18:40:57 -07:00
irqchip irqchip: armada-370-xp: Fix chained per-cpu interrupts 2015-03-23 15:16:41 +00:00
isdn isdn/bas_gigaset: fix a leak on failure path in gigaset_probe() 2014-07-29 12:18:34 -07:00
leds Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds 2014-06-12 13:08:09 -07:00
lguest drivers/lguest/page_tables.c: rename do_set_pte() 2014-04-07 16:35:52 -07:00
macintosh powerpc/macintosh/smu.c: Fix closing brace followed by if 2014-06-24 12:43:15 +10:00
mailbox drivers/mailbox/omap: make mbox->irq signed for error handling 2014-01-23 16:36:53 -08:00
mcb mcb: Add support for shared PCI IRQs 2014-05-27 17:38:11 -07:00
md md/raid0: fix bug with chunksize not a power of 2. 2015-05-05 11:09:54 +01:00
media [media] rc: img-ir: fix error in parameters passed to irq_free() 2015-05-05 11:09:53 +01:00
memory memory: mvebu-devbus: add a devbus, keep-config property 2014-04-29 13:17:10 +00:00
memstick memstick: mspro_block: add missing curly braces 2015-05-06 11:33:10 +01:00
message mptfusion: enable no_write_same for vmware scsi disks 2014-10-30 09:40:12 -07:00
mfd mfd: kempld-core: Fix callback return value check 2015-04-10 10:03:55 +01:00
misc mei: make device disabled on stop unconditionally 2015-03-18 15:06:06 +00:00
mmc mmc: card: Don't access RPMB partitions for normal read/write 2015-05-20 13:26:16 +01:00
mtd UBI: fix soft lockup in ubi_check_volume() 2015-05-12 09:36:35 +01:00
net mlx4_en: Use correct loop cursor in error path. 2015-05-12 09:36:39 +01:00
nfc NFC: microread: Potential overflows in microread_target_discovered() 2014-10-05 13:41:05 -07:00
ntb ntb: Use pci_enable_msix_range() instead of pci_enable_msix() 2014-04-07 10:59:20 -07:00
nubus kernel/printk: use symbolic defines for console loglevels 2014-06-04 16:54:17 -07:00
of drivers/of: Add empty ranges quirk for PA-Semi 2015-05-06 10:36:23 +01:00
oprofile oprofile, nmi-timer: Fix CPU hotplug callback registration 2014-03-20 13:43:46 +01:00
parisc PCI changes for the v3.12 merge window: 2013-09-03 16:24:35 -07:00
parport parport: fix menu breakage 2014-07-25 18:00:23 -07:00
pci PCI: cpcihp: Add missing curly braces in cpci_configure_slot() 2015-04-27 16:16:33 +01:00
pcmcia pcmcia: Use pci_is_bridge() to simplify code 2014-05-27 14:58:24 -06:00
phy phy: Find the right match in devm_phy_destroy() 2015-03-30 11:11:30 +01:00
pinctrl pinctrl: Don't just pretend to protect pinctrl_maps, do it for real 2015-05-20 13:26:16 +01:00
platform apple-gmux: lock iGP IO to protect from vgaarb changes 2015-05-06 11:33:00 +01:00
pnp ACPI / PNP: Fix acpi_pnp_match() 2014-07-30 00:23:09 +02:00
power power_supply: lp8788-charger: Fix leaked power supply on probe fail 2015-05-04 16:06:35 +01:00
powercap powercap / RAPL: add support for CPU model 0x3f 2015-01-15 10:44:49 +00:00
pps drivers/pps/clients/pps-gpio.c: remove redundant of_match_ptr 2013-11-13 12:09:35 +09:00
ps3 ps3-vuart: don't use PREPARE_WORK 2014-03-07 10:24:48 -05:00
ptp ptp: ptp_pch depends on x86_32 2014-06-17 15:43:48 -07:00
pwm pwm: Fix period and polarity in pwm_get() for non-perfect matches 2014-10-05 13:40:52 -07:00
rapidio rapidio/tsi721_dma: fix failure to obtain transaction descriptor 2014-07-30 17:16:13 -07:00
regulator regulator: core: Fix enable GPIO reference counting 2015-03-30 11:11:07 +01:00
remoteproc remoteproc: da8xx: don't select CMA on no-MMU 2014-06-17 17:09:36 +02:00
reset reset: sunxi: fix spinlock initialization 2015-01-22 16:33:34 +00:00
rpmsg A small pull request consisting of: 2013-05-07 14:02:00 -07:00
rtc drivers/rtc/rtc-s5m.c: terminate s5m_rtc_id array with empty element 2015-02-04 10:58:19 +00:00
s390 crypto: prefix module autoloading with "crypto-" 2015-02-04 10:57:48 +00:00
sbus bbc-i2c: Fix BBC I2C envctrl on SunBlade 2000 2014-08-14 10:09:44 +08:00
scsi 3w-9xxx: fix command completion race 2015-05-12 09:36:37 +01:00
sfi SFI / ACPI: Fix warnings reported during builds with W=1 2013-12-07 01:24:33 +01:00
sh SH Driver Update for v3.16 2014-06-06 11:44:09 -07:00
sn Drivers: misc: remove __dev* attributes. 2013-01-03 15:57:16 -08:00
soc soc: qcom: fix of_device_id table 2014-05-26 21:27:09 +02:00
spi spi: spidev: fix possible arithmetic overflow for multi-transfer message 2015-04-27 09:48:12 +01:00
spmi spmi: pm: drop bus-level PM suspend/resume routines 2014-03-08 22:15:52 -08:00
ssb Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2014-01-30 17:20:32 -08:00
staging staging: panel: fix lcd type 2015-05-05 11:09:34 +01:00
target target/file: Fix UNMAP with DIF protection support 2015-05-06 10:36:17 +01:00
tc TC: Handle device_register() errors. 2014-06-26 10:48:23 +01:00
thermal tick/powerclamp: Remove tick_nohz_idle abuse 2015-01-15 10:44:41 +00:00
tty xen/console: Update console event channel on resume 2015-05-20 13:26:06 +01:00
uio Revert "uio: fix vma io range check in mmap" 2014-06-17 16:07:08 -07:00
usb cdc-acm: prevent infinite loop when parsing CDC headers. 2015-05-12 09:36:38 +01:00
uwb uwb: init beacon cache entry before registering uwb device 2014-10-05 13:40:58 -07:00
vfio vfio-pci: Fix the check on pci device type in vfio_pci_probe() 2015-01-16 14:34:28 +00:00
vhost vhost/scsi: potential memory corruption 2015-03-03 14:26:02 +00:00
video video/fbdev: fix defio's fsync 2015-01-16 14:34:19 +00:00
virt drivers: clean-up prom.h implicit includes 2013-10-09 20:04:04 -05:00
virtio virtio_pci: document why we defer kfree 2015-02-19 10:39:52 +00:00
vlynq drivers/vlynq/vlynq.c: fix another resource size off by 1 error 2014-01-23 16:36:55 -08:00
vme vme_tsi148: Utilize to_pci_dev() macro 2014-04-16 14:08:37 -07:00
w1 w1: mxc_w1: Fix incorrect "presence" status 2014-06-19 17:51:46 -07:00
watchdog Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux 2014-06-21 06:47:01 -10:00
xen xen-pciback: Add name prefix to global 'permissive' variable 2015-05-20 13:26:14 +01:00
zorro zorro/UAPI: Use proper types (endianness/size) in <linux/zorro.h> 2013-11-26 11:09:09 +01:00
Kconfig soc: Introduce drivers/soc place-holder for SOC specific drivers 2014-05-23 11:37:46 -05:00
Makefile Char / misc driver patches for 3.16-rc1 2014-06-03 08:06:56 -07:00