Revision 7ff57e98fb78ad94edafbdc7435f2d745e9e6bb5 authored by Fabio M. De Francesco on 23 February 2022, 10:02:52 UTC, committed by Jakub Kicinski on 24 February 2022, 17:09:33 UTC
smc_pnetid_by_table_ib() uses read_lock() and then it calls smc_pnet_apply_ib()
which, in turn, calls mutex_lock(&smc_ib_devices.mutex).

read_lock() disables preemption. Therefore, the code acquires a mutex while in
atomic context and it leads to a SAC bug.

Fix this bug by replacing the rwlock with a mutex.

Reported-and-tested-by: syzbot+4f322a6d84e991c38775@syzkaller.appspotmail.com
Fixes: 64e28b52c7a6 ("net/smc: add pnet table namespace support")
Confirmed-by: Tony Lu <tonylu@linux.alibaba.com>
Signed-off-by: Fabio M. De Francesco <fmdefrancesco@gmail.com>
Acked-by: Karsten Graul <kgraul@linux.ibm.com>
Link: https://lore.kernel.org/r/20220223100252.22562-1-fmdefrancesco@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent e13ad14
Raw File
powr1220.rst
Kernel driver powr1220
======================

Supported chips:

  * Lattice POWR1220AT8

    Prefix: 'powr1220'

    Addresses scanned: none

    Datasheet: Publicly available at the Lattice website

	       http://www.latticesemi.com/

Author: Scott Kanowitz <scott.kanowitz@gmail.com>

Description
-----------

This driver supports the Lattice POWR1220AT8 chip. The POWR1220
includes voltage monitoring for 14 inputs as well as trim settings
for output voltages and GPIOs. This driver implements the voltage
monitoring portion of the chip.

Voltages are sampled by a 12-bit ADC with a step size of 2 mV.
An in-line attenuator allows measurements from 0 to 6 V. The
attenuator is enabled or disabled depending on the setting of the
input's max value. The driver will enable the attenuator for any
value over the low measurement range maximum of 2 V.

The input naming convention is as follows:

============== ========
driver name    pin name
============== ========
in0            VMON1
in1            VMON2
in2            VMON3
in2            VMON4
in4            VMON5
in5            VMON6
in6            VMON7
in7            VMON8
in8            VMON9
in9            VMON10
in10           VMON11
in11           VMON12
in12           VCCA
in13           VCCINP
============== ========

The ADC readings are updated on request with a minimum period of 1s.
back to top