## ## Au1200/Au1550/Au1300 PSC + DBDMA ## config SND_SOC_AU1XPSC tristate "SoC Audio for Au12xx/Au13xx/Au1550" depends on MIPS_ALCHEMY help This option enables support for the Programmable Serial Controllers in AC97 and I2S mode, and the Descriptor-Based DMA Controller (DBDMA) as found on the Au12xx/Au13xx/Au1550 SoC. config SND_SOC_AU1XPSC_I2S tristate config SND_SOC_AU1XPSC_AC97 tristate select AC97_BUS select SND_AC97_CODEC select SND_SOC_AC97_BUS ## ## Au1000/1500/1100 DMA + AC97C/I2SC ## config SND_SOC_AU1XAUDIO tristate "SoC Audio for Au1000/Au1500/Au1100" depends on MIPS_ALCHEMY help This is a driver set for the AC97 unit and the old DMA controller as found on the Au1000/Au1500/Au1100 chips. config SND_SOC_AU1XAC97C tristate select AC97_BUS select SND_AC97_CODEC select SND_SOC_AC97_BUS config SND_SOC_AU1XI2SC tristate ## ## Boards ## config SND_SOC_DB1000 tristate "DB1000 Audio support" depends on SND_SOC_AU1XAUDIO select SND_SOC_AU1XAC97C select SND_SOC_AC97_CODEC help Select this option to enable AC97 audio on the early DB1x00 series of boards (DB1000/DB1500/DB1100). config SND_SOC_DB1200 tristate "DB1200/DB1300/DB1550 Audio support" depends on SND_SOC_AU1XPSC select SND_SOC_AU1XPSC_AC97 select SND_SOC_AC97_CODEC select SND_SOC_WM9712 select SND_SOC_AU1XPSC_I2S select SND_SOC_WM8731 help Select this option to enable audio (AC97 and I2S) on the Alchemy/AMD/RMI/NetLogic Db1200, Db1550 and Db1300 evaluation boards. If you need Db1300 touchscreen support, you definitely want to say Y. class='tabs'> summaryrefslogtreecommitdiff
path: root/include/net/sch_generic.h
diff options
context:
space:
mode:
authorDouglas Miller <dougmill@linux.vnet.ibm.com>2017-01-28 06:42:20 -0600
committerTejun Heo <tj@kernel.org>2017-01-28 07:49:42 -0500
commit966d2b04e070bc040319aaebfec09e0144dc3341 (patch)
tree4b96156e3d1dd4dfd6039b7c219c9dc4616da52d /include/net/sch_generic.h
parent1b1bc42c1692e9b62756323c675a44cb1a1f9dbd (diff)
percpu-refcount: fix reference leak during percpu-atomic transition
percpu_ref_tryget() and percpu_ref_tryget_live() should return "true" IFF they acquire a reference. But the return value from atomic_long_inc_not_zero() is a long and may have high bits set, e.g. PERCPU_COUNT_BIAS, and the return value of the tryget routines is bool so the reference may actually be acquired but the routines return "false" which results in a reference leak since the caller assumes it does not need to do a corresponding percpu_ref_put(). This was seen when performing CPU hotplug during I/O, as hangs in blk_mq_freeze_queue_wait where percpu_ref_kill (blk_mq_freeze_queue_start) raced with percpu_ref_tryget (blk_mq_timeout_work). Sample stack trace: __switch_to+0x2c0/0x450 __schedule+0x2f8/0x970 schedule+0x48/0xc0 blk_mq_freeze_queue_wait+0x94/0x120 blk_mq_queue_reinit_work+0xb8/0x180 blk_mq_queue_reinit_prepare+0x84/0xa0 cpuhp_invoke_callback+0x17c/0x600 cpuhp_up_callbacks+0x58/0x150 _cpu_up+0xf0/0x1c0 do_cpu_up+0x120/0x150 cpu_subsys_online+0x64/0xe0 device_online+0xb4/0x120 online_store+0xb4/0xc0 dev_attr_store+0x68/0xa0 sysfs_kf_write+0x80/0xb0 kernfs_fop_write+0x17c/0x250 __vfs_write+0x6c/0x1e0 vfs_write+0xd0/0x270 SyS_write+0x6c/0x110 system_call+0x38/0xe0 Examination of the queue showed a single reference (no PERCPU_COUNT_BIAS, and __PERCPU_REF_DEAD, __PERCPU_REF_ATOMIC set) and no requests. However, conditions at the time of the race are count of PERCPU_COUNT_BIAS + 0 and __PERCPU_REF_DEAD and __PERCPU_REF_ATOMIC set. The fix is to make the tryget routines use an actual boolean internally instead of the atomic long result truncated to a int. Fixes: e625305b3907 percpu-refcount: make percpu_ref based on longs instead of ints Link: https://bugzilla.kernel.org/show_bug.cgi?id=190751 Signed-off-by: Douglas Miller <dougmill@linux.vnet.ibm.com> Reviewed-by: Jens Axboe <axboe@fb.com> Signed-off-by: Tejun Heo <tj@kernel.org> Fixes: e625305b3907 ("percpu-refcount: make percpu_ref based on longs instead of ints") Cc: stable@vger.kernel.org # v3.18+
Diffstat (limited to 'include/net/sch_generic.h')
in
-rw-r--r--bcm2835.h1962logplain
-rw-r--r--berlin2.h1034logplain
-rw-r--r--berlin2q.h695logplain
-rw-r--r--clps711x-clock.h718logplain
-rw-r--r--efm32-cmu.h1112logplain
-rw-r--r--exynos-audss-clk.h597logplain
-rw-r--r--exynos3250.h9083logplain
-rw-r--r--exynos4.h8284logplain
-rw-r--r--exynos4415.h9828logplain
-rw-r--r--exynos5250.h4616logplain
-rw-r--r--exynos5260-clk.h14876logplain
-rw-r--r--exynos5410.h1689logplain
-rw-r--r--exynos5420.h6857logplain
-rw-r--r--exynos5433.h45372logplain
-rw-r--r--exynos5440.h1141logplain
-rw-r--r--exynos7-clk.h5281logplain
-rw-r--r--gxbb-aoclkc.h2866logplain
-rw-r--r--gxbb-clkc.h592logplain
-rw-r--r--hi3516cv300-clock.h1668logplain
-rw-r--r--hi3519-clock.h1328logplain
-rw-r--r--hi3620-clock.h4496logplain
-rw-r--r--hi6220-clock.h4508logplain
-rw-r--r--hip04-clock.h1137logplain
-rw-r--r--histb-clock.h2012logplain
-rw-r--r--hix5hd2-clock.h2415logplain
-rw-r--r--imx1-clock.h1055logplain
-rw-r--r--imx21-clock.h2461logplain
-rw-r--r--imx27-clock.h3494logplain
-rw-r--r--imx5-clock.h7212logplain
-rw-r--r--imx6qdl-clock.h9593logplain
-rw-r--r--imx6sl-clock.h5849logplain
-rw-r--r--imx6sx-clock.h9099logplain
-rw-r--r--imx6ul-clock.h8203logplain
-rw-r--r--imx7d-clock.h15974logplain
-rw-r--r--jz4740-cgu.h1028logplain
-rw-r--r--jz4780-cgu.h2470logplain
-rw-r--r--lpc18xx-ccu.h2134logplain
-rw-r--r--lpc18xx-cgu.h1142logplain
-rw-r--r--lpc32xx-clock.h1633logplain
-rw-r--r--lsi,axm5516-clks.h974logplain
-rw-r--r--marvell,mmp2.h2022logplain
-rw-r--r--marvell,pxa168.h1654logplain
-rw-r--r--marvell,pxa1928.h1535logplain
-rw-r--r--marvell,pxa910.h1598logplain
-rw-r--r--maxim,max77620.h632logplain
-rw-r--r--maxim,max77686.h648logplain
-rw-r--r--maxim,max77802.h630logplain
-rw-r--r--meson8b-clkc.h523logplain
-rw-r--r--microchip,pic32-clock.h1150logplain
-rw-r--r--mpc512x-clock.h2236logplain
-rw-r--r--mt2701-clk.h13832logplain
-rw-r--r--mt8135-clk.h5641logplain
-rw-r--r--mt8173-clk.h9293logplain
-rw-r--r--oxsemi,ox810se.h1002logplain
-rw-r--r--oxsemi,ox820.h1203logplain
-rw-r--r--pistachio-clk.h4863logplain
-rw-r--r--pxa-clock.h1715logplain
-rw-r--r--qcom,gcc-apq8084.h12872logplain
-rw-r--r--qcom,gcc-ipq4019.h5423logplain
-rw-r--r--qcom,gcc-ipq806x.h8574logplain
-rw-r--r--qcom,gcc-mdm9615.h9497logplain
-rw-r--r--qcom,gcc-msm8660.h7932logplain
-rw-r--r--qcom,gcc-msm8916.h6190logplain
-rw-r--r--qcom,gcc-msm8960.h9342logplain
-rw-r--r--qcom,gcc-msm8974.h12340logplain
-rw-r--r--qcom,gcc-msm8994.h4858logplain
-rw-r--r--qcom,gcc-msm8996.h12575logplain
-rw-r--r--qcom,lcc-ipq806x.h899logplain
-rw-r--r--qcom,lcc-mdm9615.h1701logplain
-rw-r--r--qcom,lcc-msm8960.h1616logplain
-rw-r--r--qcom,mmcc-apq8084.h5722logplain
-rw-r--r--qcom,mmcc-msm8960.h4109logplain
-rw-r--r--qcom,mmcc-msm8974.h5223logplain
-rw-r--r--qcom,mmcc-msm8996.h9403logplain
-rw-r--r--qcom,rpmcc.h2101logplain
-rw-r--r--r7s72100-clock.h1218logplain
-rw-r--r--r8a73a4-clock.h1596logplain
-rw-r--r--r8a7740-clock.h1992logplain
-rw-r--r--r8a7743-cpg-mssr.h1269logplain
-rw-r--r--r8a7745-cpg-mssr.h1298logplain
-rw-r--r--r8a7778-clock.h1855logplain
-rw-r--r--r8a7779-clock.h1647logplain
-rw-r--r--r8a7790-clock.h4367logplain
-rw-r--r--r8a7791-clock.h4388logplain
-rw-r--r--r8a7792-clock.h2562logplain
-rw-r--r--r8a7793-clock.h4561logplain
-rw-r--r--r8a7794-clock.h3679logplain
-rw-r--r--r8a7795-cpg-mssr.h1890logplain
-rw-r--r--r8a7796-cpg-mssr.h2066logplain
-rw-r--r--renesas-cpg-mssr.h542logplain
-rw-r--r--rk1108-cru.h6605logplain
-rw-r--r--rk3036-cru.h4584logplain
-rw-r--r--rk3066a-cru.h1068logplain
-rw-r--r--rk3188-cru-common.h6105logplain
-rw-r--r--rk3188-cru.h1435logplain