# # 1-wire slaves configuration # menu "1-wire Slaves" config W1_SLAVE_THERM tristate "Thermal family implementation" help Say Y here if you want to connect 1-wire thermal sensors to your wire. config W1_SLAVE_SMEM tristate "Simple 64bit memory family implementation" help Say Y here if you want to connect 1-wire simple 64bit memory rom(ds2401/ds2411/ds1990*) to your wire. config W1_SLAVE_DS2408 tristate "8-Channel Addressable Switch (IO Expander) 0x29 family support (DS2408)" help Say Y here if you want to use a 1-wire DS2408 8-Channel Addressable Switch device support config W1_SLAVE_DS2408_READBACK bool "Read-back values written to DS2408's output register" depends on W1_SLAVE_DS2408 default y help Enabling this will cause the driver to read back the values written to the chip's output register in order to detect errors. This is slower but useful when debugging chips and/or busses. config W1_SLAVE_DS2413 tristate "Dual Channel Addressable Switch 0x3a family support (DS2413)" help Say Y here if you want to use a 1-wire DS2413 Dual Channel Addressable Switch device support config W1_SLAVE_DS2406 tristate "Dual Channel Addressable Switch 0x12 family support (DS2406)" select CRC16 help Say Y or M here if you want to use a 1-wire DS2406 Dual Channel Addressable Switch. EPROM read/write support for these devices is not implemented. config W1_SLAVE_DS2423 tristate "Counter 1-wire device (DS2423)" select CRC16 help If you enable this you can read the counter values available in the DS2423 chipset from the w1_slave file under the sys file system. Say Y here if you want to use a 1-wire counter family device (DS2423). config W1_SLAVE_DS2431 tristate "1kb EEPROM family support (DS2431)" help Say Y here if you want to use a 1-wire 1kb EEPROM family device (DS2431) config W1_SLAVE_DS2433 tristate "4kb EEPROM family support (DS2433)" help Say Y here if you want to use a 1-wire 4kb EEPROM family device (DS2433). config W1_SLAVE_DS2433_CRC bool "Protect DS2433 data with a CRC16" depends on W1_SLAVE_DS2433 select CRC16 help Say Y here to protect DS2433 data with a CRC16. Each block has 30 bytes of data and a two byte CRC16. Full block writes are only allowed if the CRC is valid. config W1_SLAVE_DS2760 tristate "Dallas 2760 battery monitor chip (HP iPAQ & others)" help If you enable this you will have the DS2760 battery monitor chip support. The battery monitor chip is used in many batteries/devices as the one who is responsible for charging/discharging/monitoring Li+ batteries. If you are unsure, say N. config W1_SLAVE_DS2780 tristate "Dallas 2780 battery monitor chip" help If you enable this you will have the DS2780 battery monitor chip support. The battery monitor chip is used in many batteries/devices as the one who is responsible for charging/discharging/monitoring Li+ batteries. If you are unsure, say N. config W1_SLAVE_DS2781 tristate "Dallas 2781 battery monitor chip" help If you enable this you will have the DS2781 battery monitor chip support. The battery monitor chip is used in many batteries/devices as the one who is responsible for charging/discharging/monitoring Li+ batteries. If you are unsure, say N. config W1_SLAVE_DS28E04 tristate "4096-Bit Addressable 1-Wire EEPROM with PIO (DS28E04-100)" select CRC16 help If you enable this you will have the DS28E04-100 chip support. Say Y here if you want to use a 1-wire 4kb EEPROM with PIO family device (DS28E04). If you are unsure, say N. config W1_SLAVE_BQ27000 tristate "BQ27000 slave support" help Say Y here if you want to use a hdq bq27000 slave support. endmenu orews' onchange='this.form.submit();'>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 /tools/perf
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 'tools/perf')