All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 0/5] Add ADXL367 driver
@ 2022-02-06 21:13 Cosmin Tanislav
  2022-02-06 21:13 ` [PATCH v4 1/5] iio: introduce mag_referenced Cosmin Tanislav
                   ` (4 more replies)
  0 siblings, 5 replies; 9+ messages in thread
From: Cosmin Tanislav @ 2022-02-06 21:13 UTC (permalink / raw)
  Cc: cosmin.tanislav, demonsingur, Lars-Peter Clausen,
	Michael Hennerich, Rob Herring, linux-iio, devicetree,
	linux-kernel

The ADXL367 is an ultralow power, 3-axis MEMS accelerometer.

The ADXL367 does not alias input signals to achieve ultralow power
consumption, it samples the full bandwidth of the sensor at all
data rates. Measurement ranges of +-2g, +-4g, and +-8g are available,
with a resolution of 0.25mg/LSB on the +-2 g range.

In addition to its ultralow power consumption, the ADXL367
has many features to enable true system level power reduction.
It includes a deep multimode output FIFO, a built-in micropower
temperature sensor, and an internal ADC for synchronous conversion
of an additional analog input.

V1 -> V2
 * add support for vdd and vddio supplies
 * lock fifo_watermark retrieval
 * fix indentation of sysfs_emit for fifo_mode
 * dt-bindings: add spi-max-frequency: true
 * dt-bindings: remove cs-gpios property
 * dt-bindings: remove status property
 * dt-bindings: add support for vdd

V2 -> V3
 * MAINTAINERS: use wildcard for adxl367
 * dt-bindings: adxl367@addr -> accelerometer@addr
 * put asm include after linux includes
 * drop registers accessed implicitly
 * fifo_full -> fifo_watermark
 * print expected device id
 * remove INDIO_BUFFER_HARDWARE
 * inline ADXL367_EVENT macro
 * inline ADXL367_14BIT_SCAN_INFO
 * inline regulator enum
 * remove of.h in spi driver
 * cast const void * to const u8 * in spi read
 * switch to trigger-less buffer
 * increase reset time as advised by hardware team
 * let iio framework validate available channel masks
 * enable adc or temp channel automatically on single read
 * wait for 100ms after enabling adc or temp for output
   to settle on single read (waiting on hardware team input)
 * enable adc or temp channel automatically on buffered read
 * claim direct mode when setting range
 * claim direct mode when setting odr
 * claim direct mode when setting event config
 * sort status masks in descending bit order
 * hardcode indio_dev name
 * add some comments regarding spi message layout
 * use bulk_write for activity and inactivity threshold
 * use bulk_write for inactivity time
 * use bool as return type of fifo format finding function
 * remove shift from channels scan type

V3 -> V4
 * add a patch that introduces mag_referenced event type
 * add a patch that documents mag_referenced event type
 * add a patch that adds a note to the buffer/enable documentation
   regarding configuration of other attributes during buffer capture
 * remove unused adxl367_time_scale_tbl
 * add static attribute to adxl367_write_raw_get_fmt
 * return IRQ_HANDLED when FIFO read fails and print error message
 * scale temperature value by 1000 to reach milli degrees C
 * merge dev_to_iio_dev into useplace when indio_dev is not needed
 * merge preenable into postenable and postdisable into predisable
 * fix default inactivity threshold
 * export probe symbol to namespace
 * IIO_EV_TYPE_THRESH -> IIO_EV_TYPE_MAG_REFERENCED
 * reset device and then verify dev id for 10ms
 * share events by type so that they show up with iio_accel prefix in the
   events subdirectory
 * use a separate mask for extracting data
   I previously removed the shift fron scan_type since the FIFO data does
   not contain a shift but that broke single channel reads. Add it back
   just for single channel reads.

Cosmin Tanislav (5):
  iio: introduce mag_referenced
  iio: ABI: document mag_referenced
  iio: ABI: add note about configuring other attributes during buffer
    capture
  dt-bindings: iio: accel: add ADXL367
  iio: accel: add ADXL367 driver

 Documentation/ABI/testing/sysfs-bus-iio       |   30 +
 .../bindings/iio/accel/adi,adxl367.yaml       |   79 +
 MAINTAINERS                                   |    8 +
 drivers/iio/accel/Kconfig                     |   27 +
 drivers/iio/accel/Makefile                    |    3 +
 drivers/iio/accel/adxl367.c                   | 1585 +++++++++++++++++
 drivers/iio/accel/adxl367.h                   |   23 +
 drivers/iio/accel/adxl367_i2c.c               |   90 +
 drivers/iio/accel/adxl367_spi.c               |  164 ++
 drivers/iio/industrialio-event.c              |    1 +
 include/uapi/linux/iio/types.h                |    1 +
 tools/iio/iio_event_monitor.c                 |    1 +
 12 files changed, 2012 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/iio/accel/adi,adxl367.yaml
 create mode 100644 drivers/iio/accel/adxl367.c
 create mode 100644 drivers/iio/accel/adxl367.h
 create mode 100644 drivers/iio/accel/adxl367_i2c.c
 create mode 100644 drivers/iio/accel/adxl367_spi.c

-- 
2.35.0


^ permalink raw reply	[flat|nested] 9+ messages in thread
* Re: [PATCH v4 5/5] iio: accel: add ADXL367 driver
@ 2022-02-11 19:42 kernel test robot
  0 siblings, 0 replies; 9+ messages in thread
From: kernel test robot @ 2022-02-11 19:42 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 30745 bytes --]

CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
In-Reply-To: <20220206211307.1564647-6-cosmin.tanislav@analog.com>
References: <20220206211307.1564647-6-cosmin.tanislav@analog.com>
TO: Cosmin Tanislav <demonsingur@gmail.com>
CC: cosmin.tanislav(a)analog.com
CC: demonsingur(a)gmail.com
CC: "Lars-Peter Clausen" <lars@metafoo.de>
CC: Michael Hennerich <Michael.Hennerich@analog.com>
CC: Rob Herring <robh+dt@kernel.org>
CC: linux-iio(a)vger.kernel.org
CC: devicetree(a)vger.kernel.org
CC: linux-kernel(a)vger.kernel.org

Hi Cosmin,

I love your patch! Perhaps something to improve:

[auto build test WARNING on jic23-iio/togreg]
[also build test WARNING on robh/for-next linus/master v5.17-rc3 next-20220211]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Cosmin-Tanislav/Add-ADXL367-driver/20220207-051424
base:   https://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio.git togreg
:::::: branch date: 5 days ago
:::::: commit date: 5 days ago
config: arm-randconfig-c002-20220209 (https://download.01.org/0day-ci/archive/20220212/202202120337.rqmB1dvB-lkp(a)intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project e8bff9ae54a55b4dbfeb6ba55f723abbd81bf494)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install arm cross compiling tool for clang build
        # apt-get install binutils-arm-linux-gnueabi
        # https://github.com/0day-ci/linux/commit/598203f0ba563c39a04a781c2c6acd9375b3b01c
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Cosmin-Tanislav/Add-ADXL367-driver/20220207-051424
        git checkout 598203f0ba563c39a04a781c2c6acd9375b3b01c
        # save the config file to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm clang-analyzer 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


clang-analyzer warnings: (new ones prefixed by >>)
   drivers/crypto/caam/caamalg.c:1505:2: note: 3rd function call argument is an uninitialized value
           init_authenc_job(req, edesc, all_contig, encrypt);
           ^                            ~~~~~~~~~~
   drivers/crypto/caam/caamalg.c:1561:2: warning: 3rd function call argument is an uninitialized value [clang-analyzer-core.CallAndMessage]
           init_gcm_job(req, edesc, all_contig, encrypt);
           ^
   drivers/crypto/caam/caamalg.c:1587:9: note: '?' condition is false
           return crypto_ipsec_check_assoclen(req->assoclen) ? : gcm_decrypt(req);
                  ^
   drivers/crypto/caam/caamalg.c:1587:56: note: Calling 'gcm_decrypt'
           return crypto_ipsec_check_assoclen(req->assoclen) ? : gcm_decrypt(req);
                                                                 ^~~~~~~~~~~~~~~~
   drivers/crypto/caam/caamalg.c:1577:9: note: Calling 'gcm_crypt'
           return gcm_crypt(req, false);
                  ^~~~~~~~~~~~~~~~~~~~~
   drivers/crypto/caam/caamalg.c:1552:2: note: 'all_contig' declared without an initial value
           bool all_contig;
           ^~~~~~~~~~~~~~~
   drivers/crypto/caam/caamalg.c:1555:10: note: Calling 'aead_edesc_alloc'
           edesc = aead_edesc_alloc(req, GCM_DESC_JOB_IO_LEN, &all_contig,
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/crypto/caam/caamalg.c:1296:17: note: Assuming the condition is true
           gfp_t flags = (req->base.flags & CRYPTO_TFM_REQ_MAY_SLEEP) ?
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/crypto/caam/caamalg.c:1296:16: note: '?' condition is true
           gfp_t flags = (req->base.flags & CRYPTO_TFM_REQ_MAY_SLEEP) ?
                         ^
   drivers/crypto/caam/caamalg.c:1304:15: note: Assuming field 'dst' is equal to field 'src'
           if (unlikely(req->dst != req->src)) {
                        ^
   include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                               ^
   drivers/crypto/caam/caamalg.c:1304:2: note: Taking false branch
           if (unlikely(req->dst != req->src)) {
           ^
   drivers/crypto/caam/caamalg.c:1323:7: note: 'encrypt' is false
                             (encrypt ? authsize : 0);
                              ^~~~~~~
   drivers/crypto/caam/caamalg.c:1323:7: note: '?' condition is false
   drivers/crypto/caam/caamalg.c:1326:16: note: Assuming 'src_nents' is < 0
                   if (unlikely(src_nents < 0)) {
                                ^
   include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                               ^
   drivers/crypto/caam/caamalg.c:1326:3: note: Taking true branch
                   if (unlikely(src_nents < 0)) {
                   ^
   drivers/crypto/caam/caamalg.c:1327:4: note: Loop condition is false.  Exiting loop
                           dev_err(jrdev, "Insufficient bytes (%d) in src S/G\n",
                           ^
   include/linux/dev_printk.h:144:2: note: expanded from macro 'dev_err'
           dev_printk_index_wrap(_dev_err, KERN_ERR, dev, dev_fmt(fmt), ##__VA_ARGS__)
           ^
   include/linux/dev_printk.h:109:3: note: expanded from macro 'dev_printk_index_wrap'
                   dev_printk_index_emit(level, fmt);                      \
                   ^
   include/linux/dev_printk.h:105:2: note: expanded from macro 'dev_printk_index_emit'
           printk_index_subsys_emit("%s %s: ", level, fmt)
           ^
   include/linux/printk.h:417:2: note: expanded from macro 'printk_index_subsys_emit'
           __printk_index_emit(fmt, level, subsys_fmt_prefix)
           ^
   include/linux/printk.h:396:34: note: expanded from macro '__printk_index_emit'
   #define __printk_index_emit(...) do {} while (0)
                                    ^
   drivers/crypto/caam/caamalg.c:1329:4: note: Returning without writing to '*all_contig_ptr'
                           return ERR_PTR(src_nents);
                           ^
   drivers/crypto/caam/caamalg.c:1555:10: note: Returning from 'aead_edesc_alloc'
           edesc = aead_edesc_alloc(req, GCM_DESC_JOB_IO_LEN, &all_contig,
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/crypto/caam/caamalg.c:1557:6: note: Calling 'IS_ERR'
           if (IS_ERR(edesc))
               ^~~~~~~~~~~~~
   include/linux/err.h:36:9: note: Assuming the condition is false
           return IS_ERR_VALUE((unsigned long)ptr);
                  ^
   include/linux/err.h:22:34: note: expanded from macro 'IS_ERR_VALUE'
   #define IS_ERR_VALUE(x) unlikely((unsigned long)(void *)(x) >= (unsigned long)-MAX_ERRNO)
                           ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                               ^
   include/linux/err.h:36:2: note: Returning zero, which participates in a condition later
           return IS_ERR_VALUE((unsigned long)ptr);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/crypto/caam/caamalg.c:1557:6: note: Returning from 'IS_ERR'
           if (IS_ERR(edesc))
               ^~~~~~~~~~~~~
   drivers/crypto/caam/caamalg.c:1557:2: note: Taking false branch
           if (IS_ERR(edesc))
           ^
   drivers/crypto/caam/caamalg.c:1561:2: note: 3rd function call argument is an uninitialized value
           init_gcm_job(req, edesc, all_contig, encrypt);
           ^                        ~~~~~~~~~~
   Suppressed 4 warnings (3 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   4 warnings generated.
>> drivers/iio/accel/adxl367.c:156:8: warning: Excessive padding in 'struct adxl367_state' (51 padding bytes, where 19 is optimal). 
   Optimal fields order: 
   fifo_buf, 
   ops, 
   context, 
   dev, 
   regmap, 
   odr, 
   range, 
   act_threshold, 
   act_time_ms, 
   inact_threshold, 
   inact_time_ms, 
   fifo_set_size, 
   fifo_watermark, 
   regulators, 
   lock, 
   sample_buf, 
   act_threshold_buf, 
   inact_time_buf, 
   status_buf, 
   consider reordering the fields or adding explicit padding members [clang-analyzer-optin.performance.Padding]
   struct adxl367_state {
   ~~~~~~~^~~~~~~~~~~~~~~
   drivers/iio/accel/adxl367.c:156:8: note: Excessive padding in 'struct adxl367_state' (51 padding bytes, where 19 is optimal). Optimal fields order: fifo_buf, ops, context, dev, regmap, odr, range, act_threshold, act_time_ms, inact_threshold, inact_time_ms, fifo_set_size, fifo_watermark, regulators, lock, sample_buf, act_threshold_buf, inact_time_buf, status_buf, consider reordering the fields or adding explicit padding members
   struct adxl367_state {
   ~~~~~~~^~~~~~~~~~~~~~~
>> drivers/iio/accel/adxl367.c:884:10: warning: The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage [clang-analyzer-core.uninitialized.Assign]
           handled |= adxl367_push_event(indio_dev, status);
           ~~~~~~~ ^
   drivers/iio/accel/adxl367.c:876:2: note: 'handled' declared without an initial value
           bool handled;
           ^~~~~~~~~~~~
   drivers/iio/accel/adxl367.c:880:8: note: Calling 'adxl367_get_status'
           ret = adxl367_get_status(st, &status, &fifo_entries);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/iio/accel/adxl367.c:817:6: note: Assuming 'ret' is 0
           if (ret)
               ^~~
   drivers/iio/accel/adxl367.c:817:2: note: Taking false branch
           if (ret)
           ^
   drivers/iio/accel/adxl367.c:825:2: note: Returning zero, which participates in a condition later
           return 0;
           ^~~~~~~~
   drivers/iio/accel/adxl367.c:880:8: note: Returning from 'adxl367_get_status'
           ret = adxl367_get_status(st, &status, &fifo_entries);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/iio/accel/adxl367.c:881:6: note: 'ret' is 0
           if (ret)
               ^~~
   drivers/iio/accel/adxl367.c:881:2: note: Taking false branch
           if (ret)
           ^
   drivers/iio/accel/adxl367.c:884:10: note: The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage
           handled |= adxl367_push_event(indio_dev, status);
           ~~~~~~~ ^
   Suppressed 2 warnings (1 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   7 warnings generated.
   net/bluetooth/hci_request.c:2342:2: warning: 2nd function call argument is an uninitialized value [clang-analyzer-core.CallAndMessage]
           mgmt_set_connectable_complete(hdev, status);
           ^                                   ~~~~~~
   net/bluetooth/hci_request.c:2339:2: note: 'status' declared without an initial value
           u8 status;
           ^~~~~~~~~
   net/bluetooth/hci_request.c:2341:2: note: Calling 'hci_req_sync'
           hci_req_sync(hdev, connectable_update, 0, HCI_CMD_TIMEOUT, &status);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/bluetooth/hci_request.c:282:6: note: Assuming the condition is false
           if (test_bit(HCI_UP, &hdev->flags))
               ^
   include/asm-generic/bitops/non-atomic.h:120:18: note: expanded from macro 'test_bit'
   #define test_bit arch_test_bit
                    ^
   net/bluetooth/hci_request.c:282:2: note: Taking false branch
           if (test_bit(HCI_UP, &hdev->flags))
           ^
   net/bluetooth/hci_request.c:288:2: note: Returning without writing to '*hci_status'
           return ret;
           ^
   net/bluetooth/hci_request.c:2341:2: note: Returning from 'hci_req_sync'
           hci_req_sync(hdev, connectable_update, 0, HCI_CMD_TIMEOUT, &status);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/bluetooth/hci_request.c:2342:2: note: 2nd function call argument is an uninitialized value
           mgmt_set_connectable_complete(hdev, status);
           ^                                   ~~~~~~
   net/bluetooth/hci_request.c:2455:2: warning: 2nd function call argument is an uninitialized value [clang-analyzer-core.CallAndMessage]
           mgmt_set_discoverable_complete(hdev, status);
           ^                                    ~~~~~~
   net/bluetooth/hci_request.c:2452:2: note: 'status' declared without an initial value
           u8 status;
           ^~~~~~~~~
   net/bluetooth/hci_request.c:2454:2: note: Calling 'hci_req_sync'
           hci_req_sync(hdev, discoverable_update, 0, HCI_CMD_TIMEOUT, &status);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/bluetooth/hci_request.c:282:6: note: Assuming the condition is false
           if (test_bit(HCI_UP, &hdev->flags))
               ^
   include/asm-generic/bitops/non-atomic.h:120:18: note: expanded from macro 'test_bit'
   #define test_bit arch_test_bit
                    ^
   net/bluetooth/hci_request.c:282:2: note: Taking false branch
           if (test_bit(HCI_UP, &hdev->flags))
           ^
   net/bluetooth/hci_request.c:288:2: note: Returning without writing to '*hci_status'
           return ret;
           ^
   net/bluetooth/hci_request.c:2454:2: note: Returning from 'hci_req_sync'
           hci_req_sync(hdev, discoverable_update, 0, HCI_CMD_TIMEOUT, &status);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/bluetooth/hci_request.c:2455:2: note: 2nd function call argument is an uninitialized value
           mgmt_set_discoverable_complete(hdev, status);
           ^                                    ~~~~~~
   net/bluetooth/hci_request.c:2575:3: warning: 2nd function call argument is an uninitialized value [clang-analyzer-core.CallAndMessage]
                   hci_le_conn_failed(conn, status);
                   ^                        ~~~~~~
   net/bluetooth/hci_request.c:2564:2: note: 'status' declared without an initial value
           u8 status;
           ^~~~~~~~~
   net/bluetooth/hci_request.c:2567:8: note: Calling 'hci_req_sync'
           err = hci_req_sync(hdev, update_bg_scan, 0, HCI_CMD_TIMEOUT, &status);
--
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/minmax.h:28:26: note: expanded from macro '__cmp'
   #define __cmp(x, y, op) ((x) op (y) ? (x) : (y))
                            ^~~~~~~~~~
   net/vmw_vsock/virtio_transport_common.c:437:20: note: '?' condition is false
                           bytes_to_copy = min(user_buf_len, pkt_len);
                                           ^
   include/linux/minmax.h:45:19: note: expanded from macro 'min'
   #define min(x, y)       __careful_cmp(x, y, <)
                           ^
   include/linux/minmax.h:38:3: note: expanded from macro '__careful_cmp'
                   __cmp_once(x, y, __UNIQUE_ID(__x), __UNIQUE_ID(__y), op))
                   ^
   include/linux/minmax.h:33:3: note: expanded from macro '__cmp_once'
                   __cmp(unique_x, unique_y, op); })
                   ^
   include/linux/minmax.h:28:26: note: expanded from macro '__cmp'
   #define __cmp(x, y, op) ((x) op (y) ? (x) : (y))
                            ^
   net/vmw_vsock/virtio_transport_common.c:439:8: note: Assuming 'bytes_to_copy' is not equal to 0
                           if (bytes_to_copy) {
                               ^~~~~~~~~~~~~
   net/vmw_vsock/virtio_transport_common.c:439:4: note: Taking true branch
                           if (bytes_to_copy) {
                           ^
   net/vmw_vsock/virtio_transport_common.c:448:9: note: 'err' is -14
                                   if (err) {
                                       ^~~
   net/vmw_vsock/virtio_transport_common.c:448:5: note: Taking true branch
                                   if (err) {
                                   ^
   net/vmw_vsock/virtio_transport_common.c:460:8: note: 'dequeued_len' is < 0
                           if (dequeued_len >= 0)
                               ^~~~~~~~~~~~
   net/vmw_vsock/virtio_transport_common.c:460:4: note: Taking false branch
                           if (dequeued_len >= 0)
                           ^
   net/vmw_vsock/virtio_transport_common.c:464:7: note: Assuming the condition is false
                   if (le32_to_cpu(pkt->hdr.flags) & VIRTIO_VSOCK_SEQ_EOM) {
                       ^
   include/linux/byteorder/generic.h:89:21: note: expanded from macro 'le32_to_cpu'
   #define le32_to_cpu __le32_to_cpu
                       ^
   include/uapi/linux/byteorder/little_endian.h:34:26: note: expanded from macro '__le32_to_cpu'
   #define __le32_to_cpu(x) ((__force __u32)(__le32)(x))
                            ^
   net/vmw_vsock/virtio_transport_common.c:464:3: note: Taking false branch
                   if (le32_to_cpu(pkt->hdr.flags) & VIRTIO_VSOCK_SEQ_EOM) {
                   ^
   net/vmw_vsock/virtio_transport_common.c:429:2: note: Loop condition is true.  Entering loop body
           while (!msg_ready) {
           ^
   net/vmw_vsock/virtio_transport_common.c:432:7: note: 'dequeued_len' is < 0
                   if (dequeued_len >= 0) {
                       ^~~~~~~~~~~~
   net/vmw_vsock/virtio_transport_common.c:432:3: note: Taking false branch
                   if (dequeued_len >= 0) {
                   ^
   net/vmw_vsock/virtio_transport_common.c:464:7: note: Assuming the condition is false
                   if (le32_to_cpu(pkt->hdr.flags) & VIRTIO_VSOCK_SEQ_EOM) {
                       ^
   include/linux/byteorder/generic.h:89:21: note: expanded from macro 'le32_to_cpu'
   #define le32_to_cpu __le32_to_cpu
                       ^
   include/uapi/linux/byteorder/little_endian.h:34:26: note: expanded from macro '__le32_to_cpu'
   #define __le32_to_cpu(x) ((__force __u32)(__le32)(x))
                            ^
   net/vmw_vsock/virtio_transport_common.c:464:3: note: Taking false branch
                   if (le32_to_cpu(pkt->hdr.flags) & VIRTIO_VSOCK_SEQ_EOM) {
                   ^
   net/vmw_vsock/virtio_transport_common.c:474:3: note: Calling 'virtio_transport_free_pkt'
                   virtio_transport_free_pkt(pkt);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/vmw_vsock/virtio_transport_common.c:1345:2: note: Memory is released
           kfree(pkt);
           ^~~~~~~~~~
   net/vmw_vsock/virtio_transport_common.c:474:3: note: Returning; memory was released
                   virtio_transport_free_pkt(pkt);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/vmw_vsock/virtio_transport_common.c:429:2: note: Loop condition is true.  Entering loop body
           while (!msg_ready) {
           ^
   net/vmw_vsock/virtio_transport_common.c:432:7: note: 'dequeued_len' is < 0
                   if (dequeued_len >= 0) {
                       ^~~~~~~~~~~~
   net/vmw_vsock/virtio_transport_common.c:432:3: note: Taking false branch
                   if (dequeued_len >= 0) {
                   ^
   net/vmw_vsock/virtio_transport_common.c:464:7: note: Use of memory after it is freed
                   if (le32_to_cpu(pkt->hdr.flags) & VIRTIO_VSOCK_SEQ_EOM) {
                       ^
   include/linux/byteorder/generic.h:89:21: note: expanded from macro 'le32_to_cpu'
   #define le32_to_cpu __le32_to_cpu
                       ^
   include/uapi/linux/byteorder/little_endian.h:34:50: note: expanded from macro '__le32_to_cpu'
   #define __le32_to_cpu(x) ((__force __u32)(__le32)(x))
                                                    ^~~
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   4 warnings generated.
>> drivers/iio/accel/adxl367.c:156:8: warning: Excessive padding in 'struct adxl367_state' (51 padding bytes, where 19 is optimal). 
   Optimal fields order: 
   fifo_buf, 
   ops, 
   context, 
   dev, 
   regmap, 
   odr, 
   range, 
   act_threshold, 
   act_time_ms, 
   inact_threshold, 
   inact_time_ms, 
   fifo_set_size, 
   fifo_watermark, 
   regulators, 
   lock, 
   sample_buf, 
   act_threshold_buf, 
   inact_time_buf, 
   status_buf, 
   consider reordering the fields or adding explicit padding members [clang-analyzer-optin.performance.Padding]
   struct adxl367_state {
   ~~~~~~~^~~~~~~~~~~~~~~
   drivers/iio/accel/adxl367.c:156:8: note: Excessive padding in 'struct adxl367_state' (51 padding bytes, where 19 is optimal). Optimal fields order: fifo_buf, ops, context, dev, regmap, odr, range, act_threshold, act_time_ms, inact_threshold, inact_time_ms, fifo_set_size, fifo_watermark, regulators, lock, sample_buf, act_threshold_buf, inact_time_buf, status_buf, consider reordering the fields or adding explicit padding members
   struct adxl367_state {
   ~~~~~~~^~~~~~~~~~~~~~~
>> drivers/iio/accel/adxl367.c:884:10: warning: The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage [clang-analyzer-core.uninitialized.Assign]
           handled |= adxl367_push_event(indio_dev, status);
           ~~~~~~~ ^
   drivers/iio/accel/adxl367.c:876:2: note: 'handled' declared without an initial value
           bool handled;
           ^~~~~~~~~~~~
   drivers/iio/accel/adxl367.c:880:8: note: Calling 'adxl367_get_status'
           ret = adxl367_get_status(st, &status, &fifo_entries);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/iio/accel/adxl367.c:817:6: note: Assuming 'ret' is 0
           if (ret)
               ^~~
   drivers/iio/accel/adxl367.c:817:2: note: Taking false branch
           if (ret)
           ^
   drivers/iio/accel/adxl367.c:825:2: note: Returning zero, which participates in a condition later
           return 0;
           ^~~~~~~~
   drivers/iio/accel/adxl367.c:880:8: note: Returning from 'adxl367_get_status'
           ret = adxl367_get_status(st, &status, &fifo_entries);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/iio/accel/adxl367.c:881:6: note: 'ret' is 0
           if (ret)
               ^~~
   drivers/iio/accel/adxl367.c:881:2: note: Taking false branch
           if (ret)
           ^
   drivers/iio/accel/adxl367.c:884:10: note: The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage
           handled |= adxl367_push_event(indio_dev, status);
           ~~~~~~~ ^
   Suppressed 2 warnings (1 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (1 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (1 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (1 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   net/decnet/dn_nsp_in.c:763:3: warning: Value stored to 'ptr' is never read [clang-analyzer-deadcode.DeadStores]
                   ptr += 2;
                   ^      ~
   net/decnet/dn_nsp_in.c:763:3: note: Value stored to 'ptr' is never read
                   ptr += 2;
                   ^      ~
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   4 warnings generated.
   net/decnet/dn_route.c:827:20: warning: Value stored to 'cb' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct dn_skb_cb *cb = DN_SKB_CB(skb);
                             ^~
   net/decnet/dn_route.c:827:20: note: Value stored to 'cb' during its initialization is never read
           struct dn_skb_cb *cb = DN_SKB_CB(skb);
                             ^~
   net/decnet/dn_route.c:839:20: warning: Value stored to 'cb' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct dn_skb_cb *cb = DN_SKB_CB(skb);
                             ^~
   net/decnet/dn_route.c:839:20: note: Value stored to 'cb' during its initialization is never read
           struct dn_skb_cb *cb = DN_SKB_CB(skb);
                             ^~
   net/decnet/dn_route.c:890:39: warning: Access to field 'mtu' results in a dereference of a null pointer (loaded from field 'dev') [clang-analyzer-core.NullDereference]
           if (dst_metric(&rt->dst, RTAX_MTU) > rt->dst.dev->mtu)
                                                ^
   net/decnet/dn_route.c:1646:6: note: Assuming the condition is false
           if (!net_eq(net, &init_net))
               ^~~~~~~~~~~~~~~~~~~~~~~
   net/decnet/dn_route.c:1646:2: note: Taking false branch
           if (!net_eq(net, &init_net))
           ^
   net/decnet/dn_route.c:1651:6: note: Assuming 'err' is >= 0
           if (err < 0)
               ^~~~~~~
   net/decnet/dn_route.c:1651:2: note: Taking false branch
           if (err < 0)
           ^
   net/decnet/dn_route.c:1658:6: note: Assuming 'skb' is not equal to NULL
           if (skb == NULL)
               ^~~~~~~~~~~
   net/decnet/dn_route.c:1658:2: note: Taking false branch
           if (skb == NULL)
           ^
   net/decnet/dn_route.c:1663:6: note: Assuming the condition is true
           if (tb[RTA_SRC])
               ^~~~~~~~~~~
   net/decnet/dn_route.c:1663:2: note: Taking true branch
           if (tb[RTA_SRC])
           ^
   net/decnet/dn_route.c:1666:6: note: Assuming the condition is false
           if (tb[RTA_DST])

vim +156 drivers/iio/accel/adxl367.c

598203f0ba563c Cosmin Tanislav 2022-02-06  155  
598203f0ba563c Cosmin Tanislav 2022-02-06 @156  struct adxl367_state {
598203f0ba563c Cosmin Tanislav 2022-02-06  157  	const struct adxl367_ops	*ops;
598203f0ba563c Cosmin Tanislav 2022-02-06  158  	void				*context;
598203f0ba563c Cosmin Tanislav 2022-02-06  159  
598203f0ba563c Cosmin Tanislav 2022-02-06  160  	struct device			*dev;
598203f0ba563c Cosmin Tanislav 2022-02-06  161  	struct regmap			*regmap;
598203f0ba563c Cosmin Tanislav 2022-02-06  162  
598203f0ba563c Cosmin Tanislav 2022-02-06  163  	struct regulator_bulk_data	regulators[2];
598203f0ba563c Cosmin Tanislav 2022-02-06  164  
598203f0ba563c Cosmin Tanislav 2022-02-06  165  	/*
598203f0ba563c Cosmin Tanislav 2022-02-06  166  	 * Synchronize access to members of driver state, and ensure atomicity
598203f0ba563c Cosmin Tanislav 2022-02-06  167  	 * of consecutive regmap operations.
598203f0ba563c Cosmin Tanislav 2022-02-06  168  	 */
598203f0ba563c Cosmin Tanislav 2022-02-06  169  	struct mutex		lock;
598203f0ba563c Cosmin Tanislav 2022-02-06  170  
598203f0ba563c Cosmin Tanislav 2022-02-06  171  	enum adxl367_odr	odr;
598203f0ba563c Cosmin Tanislav 2022-02-06  172  	enum adxl367_range	range;
598203f0ba563c Cosmin Tanislav 2022-02-06  173  
598203f0ba563c Cosmin Tanislav 2022-02-06  174  	unsigned int	act_threshold;
598203f0ba563c Cosmin Tanislav 2022-02-06  175  	unsigned int	act_time_ms;
598203f0ba563c Cosmin Tanislav 2022-02-06  176  	unsigned int	inact_threshold;
598203f0ba563c Cosmin Tanislav 2022-02-06  177  	unsigned int	inact_time_ms;
598203f0ba563c Cosmin Tanislav 2022-02-06  178  
598203f0ba563c Cosmin Tanislav 2022-02-06  179  	unsigned int	fifo_set_size;
598203f0ba563c Cosmin Tanislav 2022-02-06  180  	unsigned int	fifo_watermark;
598203f0ba563c Cosmin Tanislav 2022-02-06  181  
598203f0ba563c Cosmin Tanislav 2022-02-06  182  	__be16		fifo_buf[ADXL367_FIFO_SIZE] ____cacheline_aligned;
598203f0ba563c Cosmin Tanislav 2022-02-06  183  	__be16		sample_buf;
598203f0ba563c Cosmin Tanislav 2022-02-06  184  	u8		act_threshold_buf[2];
598203f0ba563c Cosmin Tanislav 2022-02-06  185  	u8		inact_time_buf[2];
598203f0ba563c Cosmin Tanislav 2022-02-06  186  	u8		status_buf[3];
598203f0ba563c Cosmin Tanislav 2022-02-06  187  };
598203f0ba563c Cosmin Tanislav 2022-02-06  188  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

^ permalink raw reply	[flat|nested] 9+ messages in thread
* Re: [PATCH v4 5/5] iio: accel: add ADXL367 driver
@ 2022-02-14  3:07 kernel test robot
  0 siblings, 0 replies; 9+ messages in thread
From: kernel test robot @ 2022-02-14  3:07 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 33257 bytes --]

CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
In-Reply-To: <20220206211307.1564647-6-cosmin.tanislav@analog.com>
References: <20220206211307.1564647-6-cosmin.tanislav@analog.com>
TO: Cosmin Tanislav <demonsingur@gmail.com>
CC: cosmin.tanislav(a)analog.com
CC: demonsingur(a)gmail.com
CC: "Lars-Peter Clausen" <lars@metafoo.de>
CC: Michael Hennerich <Michael.Hennerich@analog.com>
CC: Rob Herring <robh+dt@kernel.org>
CC: linux-iio(a)vger.kernel.org
CC: devicetree(a)vger.kernel.org
CC: linux-kernel(a)vger.kernel.org

Hi Cosmin,

I love your patch! Perhaps something to improve:

[auto build test WARNING on jic23-iio/togreg]
[also build test WARNING on robh/for-next linus/master v5.17-rc4 next-20220211]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Cosmin-Tanislav/Add-ADXL367-driver/20220207-051424
base:   https://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio.git togreg
:::::: branch date: 7 days ago
:::::: commit date: 7 days ago
config: arm-randconfig-c002-20220209 (https://download.01.org/0day-ci/archive/20220214/202202141008.Nq8V22Yr-lkp(a)intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project e8bff9ae54a55b4dbfeb6ba55f723abbd81bf494)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install arm cross compiling tool for clang build
        # apt-get install binutils-arm-linux-gnueabi
        # https://github.com/0day-ci/linux/commit/598203f0ba563c39a04a781c2c6acd9375b3b01c
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Cosmin-Tanislav/Add-ADXL367-driver/20220207-051424
        git checkout 598203f0ba563c39a04a781c2c6acd9375b3b01c
        # save the config file to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm clang-analyzer 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


clang-analyzer warnings: (new ones prefixed by >>)
           for_each_net_rcu(net) {
           ^
   include/net/net_namespace.h:339:2: note: expanded from macro 'for_each_net_rcu'
           list_for_each_entry_rcu(VAR, &net_namespace_list, list)
           ^
   include/linux/rculist.h:391:13: note: expanded from macro 'list_for_each_entry_rcu'
                pos = list_entry_rcu((head)->next, typeof(*pos), member);  \
                      ^
   include/linux/rculist.h:307:15: note: expanded from macro 'list_entry_rcu'
           container_of(READ_ONCE(ptr), type, member)
                        ^
   include/asm-generic/rwonce.h:49:2: note: expanded from macro 'READ_ONCE'
           compiletime_assert_rwonce_type(x);                              \
           ^
   include/asm-generic/rwonce.h:36:21: note: expanded from macro 'compiletime_assert_rwonce_type'
           compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
                              ^
   include/linux/compiler_types.h:302:3: note: expanded from macro '__native_word'
           (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || \
            ^
   net/netlink/genetlink.c:1445:2: note: Left side of '||' is true
           for_each_net_rcu(net) {
           ^
   include/net/net_namespace.h:339:2: note: expanded from macro 'for_each_net_rcu'
           list_for_each_entry_rcu(VAR, &net_namespace_list, list)
           ^
   include/linux/rculist.h:391:13: note: expanded from macro 'list_for_each_entry_rcu'
                pos = list_entry_rcu((head)->next, typeof(*pos), member);  \
                      ^
   include/linux/rculist.h:307:15: note: expanded from macro 'list_entry_rcu'
           container_of(READ_ONCE(ptr), type, member)
                        ^
   include/asm-generic/rwonce.h:49:2: note: expanded from macro 'READ_ONCE'
           compiletime_assert_rwonce_type(x);                              \
           ^
   include/asm-generic/rwonce.h:36:21: note: expanded from macro 'compiletime_assert_rwonce_type'
           compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
                              ^
   include/linux/compiler_types.h:303:28: note: expanded from macro '__native_word'
            sizeof(t) == sizeof(int) || sizeof(t) == sizeof(long))
                                     ^
   net/netlink/genetlink.c:1445:2: note: Taking false branch
           for_each_net_rcu(net) {
           ^
   include/net/net_namespace.h:339:2: note: expanded from macro 'for_each_net_rcu'
           list_for_each_entry_rcu(VAR, &net_namespace_list, list)
           ^
   include/linux/rculist.h:391:13: note: expanded from macro 'list_for_each_entry_rcu'
                pos = list_entry_rcu((head)->next, typeof(*pos), member);  \
                      ^
   include/linux/rculist.h:307:15: note: expanded from macro 'list_entry_rcu'
           container_of(READ_ONCE(ptr), type, member)
                        ^
   note: (skipping 2 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
   include/linux/compiler_types.h:335:2: note: expanded from macro 'compiletime_assert'
           _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
           ^
   include/linux/compiler_types.h:323:2: note: expanded from macro '_compiletime_assert'
           __compiletime_assert(condition, msg, prefix, suffix)
           ^
   include/linux/compiler_types.h:315:3: note: expanded from macro '__compiletime_assert'
                   if (!(condition))                                       \
                   ^
   net/netlink/genetlink.c:1445:2: note: Loop condition is false.  Exiting loop
           for_each_net_rcu(net) {
           ^
   include/net/net_namespace.h:339:2: note: expanded from macro 'for_each_net_rcu'
           list_for_each_entry_rcu(VAR, &net_namespace_list, list)
           ^
   include/linux/rculist.h:391:13: note: expanded from macro 'list_for_each_entry_rcu'
                pos = list_entry_rcu((head)->next, typeof(*pos), member);  \
                      ^
   include/linux/rculist.h:307:15: note: expanded from macro 'list_entry_rcu'
           container_of(READ_ONCE(ptr), type, member)
                        ^
   note: (skipping 2 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
   include/linux/compiler_types.h:335:2: note: expanded from macro 'compiletime_assert'
           _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
           ^
   include/linux/compiler_types.h:323:2: note: expanded from macro '_compiletime_assert'
           __compiletime_assert(condition, msg, prefix, suffix)
           ^
   include/linux/compiler_types.h:307:2: note: expanded from macro '__compiletime_assert'
           do {                                                            \
           ^
   net/netlink/genetlink.c:1445:2: note: Loop condition is false. Execution continues on line 1463
           for_each_net_rcu(net) {
           ^
   include/net/net_namespace.h:339:2: note: expanded from macro 'for_each_net_rcu'
           list_for_each_entry_rcu(VAR, &net_namespace_list, list)
           ^
   include/linux/rculist.h:390:2: note: expanded from macro 'list_for_each_entry_rcu'
           for (__list_check_rcu(dummy, ## cond, 0),                       \
           ^
   net/netlink/genetlink.c:1463:24: note: Access to field 'genl_sock' results in a dereference of a null pointer (loaded from variable 'prev')
           err = nlmsg_multicast(prev->genl_sock, skb, portid, group, flags);
                                 ^~~~
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   4 warnings generated.
>> drivers/iio/accel/adxl367.c:156:8: warning: Excessive padding in 'struct adxl367_state' (51 padding bytes, where 19 is optimal). 
   Optimal fields order: 
   fifo_buf, 
   ops, 
   context, 
   dev, 
   regmap, 
   odr, 
   range, 
   act_threshold, 
   act_time_ms, 
   inact_threshold, 
   inact_time_ms, 
   fifo_set_size, 
   fifo_watermark, 
   regulators, 
   lock, 
   sample_buf, 
   act_threshold_buf, 
   inact_time_buf, 
   status_buf, 
   consider reordering the fields or adding explicit padding members [clang-analyzer-optin.performance.Padding]
   struct adxl367_state {
   ~~~~~~~^~~~~~~~~~~~~~~
   drivers/iio/accel/adxl367.c:156:8: note: Excessive padding in 'struct adxl367_state' (51 padding bytes, where 19 is optimal). Optimal fields order: fifo_buf, ops, context, dev, regmap, odr, range, act_threshold, act_time_ms, inact_threshold, inact_time_ms, fifo_set_size, fifo_watermark, regulators, lock, sample_buf, act_threshold_buf, inact_time_buf, status_buf, consider reordering the fields or adding explicit padding members
   struct adxl367_state {
   ~~~~~~~^~~~~~~~~~~~~~~
>> drivers/iio/accel/adxl367.c:884:10: warning: The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage [clang-analyzer-core.uninitialized.Assign]
           handled |= adxl367_push_event(indio_dev, status);
           ~~~~~~~ ^
   drivers/iio/accel/adxl367.c:876:2: note: 'handled' declared without an initial value
           bool handled;
           ^~~~~~~~~~~~
   drivers/iio/accel/adxl367.c:880:8: note: Calling 'adxl367_get_status'
           ret = adxl367_get_status(st, &status, &fifo_entries);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/iio/accel/adxl367.c:817:6: note: Assuming 'ret' is 0
           if (ret)
               ^~~
   drivers/iio/accel/adxl367.c:817:2: note: Taking false branch
           if (ret)
           ^
   drivers/iio/accel/adxl367.c:825:2: note: Returning zero, which participates in a condition later
           return 0;
           ^~~~~~~~
   drivers/iio/accel/adxl367.c:880:8: note: Returning from 'adxl367_get_status'
           ret = adxl367_get_status(st, &status, &fifo_entries);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/iio/accel/adxl367.c:881:6: note: 'ret' is 0
           if (ret)
               ^~~
   drivers/iio/accel/adxl367.c:881:2: note: Taking false branch
           if (ret)
           ^
   drivers/iio/accel/adxl367.c:884:10: note: The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage
           handled |= adxl367_push_event(indio_dev, status);
           ~~~~~~~ ^
   Suppressed 2 warnings (1 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   7 warnings generated.
   net/bluetooth/hci_request.c:2342:2: warning: 2nd function call argument is an uninitialized value [clang-analyzer-core.CallAndMessage]
           mgmt_set_connectable_complete(hdev, status);
           ^                                   ~~~~~~
   net/bluetooth/hci_request.c:2339:2: note: 'status' declared without an initial value
           u8 status;
           ^~~~~~~~~
   net/bluetooth/hci_request.c:2341:2: note: Calling 'hci_req_sync'
           hci_req_sync(hdev, connectable_update, 0, HCI_CMD_TIMEOUT, &status);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/bluetooth/hci_request.c:282:6: note: Assuming the condition is false
           if (test_bit(HCI_UP, &hdev->flags))
               ^
   include/asm-generic/bitops/non-atomic.h:120:18: note: expanded from macro 'test_bit'
   #define test_bit arch_test_bit
                    ^
   net/bluetooth/hci_request.c:282:2: note: Taking false branch
           if (test_bit(HCI_UP, &hdev->flags))
           ^
   net/bluetooth/hci_request.c:288:2: note: Returning without writing to '*hci_status'
           return ret;
           ^
   net/bluetooth/hci_request.c:2341:2: note: Returning from 'hci_req_sync'
           hci_req_sync(hdev, connectable_update, 0, HCI_CMD_TIMEOUT, &status);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/bluetooth/hci_request.c:2342:2: note: 2nd function call argument is an uninitialized value
           mgmt_set_connectable_complete(hdev, status);
           ^                                   ~~~~~~
   net/bluetooth/hci_request.c:2455:2: warning: 2nd function call argument is an uninitialized value [clang-analyzer-core.CallAndMessage]
           mgmt_set_discoverable_complete(hdev, status);
           ^                                    ~~~~~~
   net/bluetooth/hci_request.c:2452:2: note: 'status' declared without an initial value
           u8 status;
           ^~~~~~~~~
   net/bluetooth/hci_request.c:2454:2: note: Calling 'hci_req_sync'
           hci_req_sync(hdev, discoverable_update, 0, HCI_CMD_TIMEOUT, &status);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/bluetooth/hci_request.c:282:6: note: Assuming the condition is false
           if (test_bit(HCI_UP, &hdev->flags))
               ^
   include/asm-generic/bitops/non-atomic.h:120:18: note: expanded from macro 'test_bit'
   #define test_bit arch_test_bit
                    ^
   net/bluetooth/hci_request.c:282:2: note: Taking false branch
           if (test_bit(HCI_UP, &hdev->flags))
           ^
   net/bluetooth/hci_request.c:288:2: note: Returning without writing to '*hci_status'
           return ret;
           ^
   net/bluetooth/hci_request.c:2454:2: note: Returning from 'hci_req_sync'
           hci_req_sync(hdev, discoverable_update, 0, HCI_CMD_TIMEOUT, &status);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/bluetooth/hci_request.c:2455:2: note: 2nd function call argument is an uninitialized value
           mgmt_set_discoverable_complete(hdev, status);
           ^                                    ~~~~~~
   net/bluetooth/hci_request.c:2575:3: warning: 2nd function call argument is an uninitialized value [clang-analyzer-core.CallAndMessage]
                   hci_le_conn_failed(conn, status);
                   ^                        ~~~~~~
   net/bluetooth/hci_request.c:2564:2: note: 'status' declared without an initial value
           u8 status;
           ^~~~~~~~~
   net/bluetooth/hci_request.c:2567:8: note: Calling 'hci_req_sync'
           err = hci_req_sync(hdev, update_bg_scan, 0, HCI_CMD_TIMEOUT, &status);
--
                   ^
   drivers/vhost/net.c:1162:6: note: Assuming 'mergeable' is not equal to 0
                                           likely(mergeable) ? UIO_MAXIOV : 1);
                                           ^
   include/linux/compiler.h:77:38: note: expanded from macro 'likely'
   # define likely(x)      __builtin_expect(!!(x), 1)
                                             ^~~~
   drivers/vhost/net.c:1162:6: note: '?' condition is true
                                           likely(mergeable) ? UIO_MAXIOV : 1);
                                           ^
   include/linux/compiler.h:77:20: note: expanded from macro 'likely'
   # define likely(x)      __builtin_expect(!!(x), 1)
                           ^
   drivers/vhost/net.c:1160:15: note: Calling 'get_rx_bufs'
                   headcount = get_rx_bufs(vq, vq->heads + nvq->done_idx,
                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/vhost/net.c:1054:2: note: 'len' declared without an initial value
           u32 len;
           ^~~~~~~
   drivers/vhost/net.c:1056:9: note: Assuming 'datalen' is <= 0
           while (datalen > 0 && headcount < quota) {
                  ^~~~~~~~~~~
   drivers/vhost/net.c:1056:21: note: Left side of '&&' is false
           while (datalen > 0 && headcount < quota) {
                              ^
   drivers/vhost/net.c:1089:52: note: The left operand of '+' is a garbage value
           heads[headcount - 1].len = cpu_to_vhost32(vq, len + datalen);
                                                         ~~~ ^
   drivers/vhost/net.c:1186:4: warning: Value stored to 'err' is never read [clang-analyzer-deadcode.DeadStores]
                           err = sock->ops->recvmsg(sock, &msg,
                           ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/vhost/net.c:1186:4: note: Value stored to 'err' is never read
                           err = sock->ops->recvmsg(sock, &msg,
                           ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   5 warnings generated.
   kernel/printk/printk.c:156:3: warning: Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy]
                   strcpy(devkmsg_log_str, "on");
                   ^~~~~~
   kernel/printk/printk.c:156:3: note: Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119
                   strcpy(devkmsg_log_str, "on");
                   ^~~~~~
   kernel/printk/printk.c:158:3: warning: Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy]
                   strcpy(devkmsg_log_str, "off");
                   ^~~~~~
   kernel/printk/printk.c:158:3: note: Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119
                   strcpy(devkmsg_log_str, "off");
                   ^~~~~~
   kernel/printk/printk.c:2633:2: warning: Value stored to 'do_cond_resched' is never read [clang-analyzer-deadcode.DeadStores]
           do_cond_resched = console_may_schedule;
           ^                 ~~~~~~~~~~~~~~~~~~~~
   kernel/printk/printk.c:2633:2: note: Value stored to 'do_cond_resched' is never read
           do_cond_resched = console_may_schedule;
           ^                 ~~~~~~~~~~~~~~~~~~~~
   Suppressed 2 warnings (1 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (1 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   4 warnings generated.
>> drivers/iio/accel/adxl367.c:156:8: warning: Excessive padding in 'struct adxl367_state' (51 padding bytes, where 19 is optimal). 
   Optimal fields order: 
   fifo_buf, 
   ops, 
   context, 
   dev, 
   regmap, 
   odr, 
   range, 
   act_threshold, 
   act_time_ms, 
   inact_threshold, 
   inact_time_ms, 
   fifo_set_size, 
   fifo_watermark, 
   regulators, 
   lock, 
   sample_buf, 
   act_threshold_buf, 
   inact_time_buf, 
   status_buf, 
   consider reordering the fields or adding explicit padding members [clang-analyzer-optin.performance.Padding]
   struct adxl367_state {
   ~~~~~~~^~~~~~~~~~~~~~~
   drivers/iio/accel/adxl367.c:156:8: note: Excessive padding in 'struct adxl367_state' (51 padding bytes, where 19 is optimal). Optimal fields order: fifo_buf, ops, context, dev, regmap, odr, range, act_threshold, act_time_ms, inact_threshold, inact_time_ms, fifo_set_size, fifo_watermark, regulators, lock, sample_buf, act_threshold_buf, inact_time_buf, status_buf, consider reordering the fields or adding explicit padding members
   struct adxl367_state {
   ~~~~~~~^~~~~~~~~~~~~~~
>> drivers/iio/accel/adxl367.c:884:10: warning: The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage [clang-analyzer-core.uninitialized.Assign]
           handled |= adxl367_push_event(indio_dev, status);
           ~~~~~~~ ^
   drivers/iio/accel/adxl367.c:876:2: note: 'handled' declared without an initial value
           bool handled;
           ^~~~~~~~~~~~
   drivers/iio/accel/adxl367.c:880:8: note: Calling 'adxl367_get_status'
           ret = adxl367_get_status(st, &status, &fifo_entries);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/iio/accel/adxl367.c:817:6: note: Assuming 'ret' is 0
           if (ret)
               ^~~
   drivers/iio/accel/adxl367.c:817:2: note: Taking false branch
           if (ret)
           ^
   drivers/iio/accel/adxl367.c:825:2: note: Returning zero, which participates in a condition later
           return 0;
           ^~~~~~~~
   drivers/iio/accel/adxl367.c:880:8: note: Returning from 'adxl367_get_status'
           ret = adxl367_get_status(st, &status, &fifo_entries);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/iio/accel/adxl367.c:881:6: note: 'ret' is 0
           if (ret)
               ^~~
   drivers/iio/accel/adxl367.c:881:2: note: Taking false branch
           if (ret)
           ^
   drivers/iio/accel/adxl367.c:884:10: note: The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage
           handled |= adxl367_push_event(indio_dev, status);
           ~~~~~~~ ^
   Suppressed 2 warnings (1 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   1 warning generated.
   fs/orangefs/inode.c:836:3: warning: Value stored to 'ret' is never read [clang-analyzer-deadcode.DeadStores]
                   ret = posix_acl_chmod(&init_user_ns, inode, inode->i_mode);
                   ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/orangefs/inode.c:836:3: note: Value stored to 'ret' is never read
                   ret = posix_acl_chmod(&init_user_ns, inode, inode->i_mode);
                   ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   drivers/input/touchscreen/max11801_ts.c:107:3: warning: Value stored to 'status' is never read [clang-analyzer-deadcode.DeadStores]
                   status = read_register(data->client, GENERNAL_STATUS_REG);
                   ^        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/input/touchscreen/max11801_ts.c:107:3: note: Value stored to 'status' is never read
                   status = read_register(data->client, GENERNAL_STATUS_REG);
                   ^        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   drivers/net/can/dev/rx-offload.c:84:3: warning: Value stored to 'cb_pos' is never read [clang-analyzer-deadcode.DeadStores]
                   cb_pos = can_rx_offload_get_cb(pos);
                   ^        ~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/can/dev/rx-offload.c:84:3: note: Value stored to 'cb_pos' is never read

vim +156 drivers/iio/accel/adxl367.c

598203f0ba563c Cosmin Tanislav 2022-02-06  155  
598203f0ba563c Cosmin Tanislav 2022-02-06 @156  struct adxl367_state {
598203f0ba563c Cosmin Tanislav 2022-02-06  157  	const struct adxl367_ops	*ops;
598203f0ba563c Cosmin Tanislav 2022-02-06  158  	void				*context;
598203f0ba563c Cosmin Tanislav 2022-02-06  159  
598203f0ba563c Cosmin Tanislav 2022-02-06  160  	struct device			*dev;
598203f0ba563c Cosmin Tanislav 2022-02-06  161  	struct regmap			*regmap;
598203f0ba563c Cosmin Tanislav 2022-02-06  162  
598203f0ba563c Cosmin Tanislav 2022-02-06  163  	struct regulator_bulk_data	regulators[2];
598203f0ba563c Cosmin Tanislav 2022-02-06  164  
598203f0ba563c Cosmin Tanislav 2022-02-06  165  	/*
598203f0ba563c Cosmin Tanislav 2022-02-06  166  	 * Synchronize access to members of driver state, and ensure atomicity
598203f0ba563c Cosmin Tanislav 2022-02-06  167  	 * of consecutive regmap operations.
598203f0ba563c Cosmin Tanislav 2022-02-06  168  	 */
598203f0ba563c Cosmin Tanislav 2022-02-06  169  	struct mutex		lock;
598203f0ba563c Cosmin Tanislav 2022-02-06  170  
598203f0ba563c Cosmin Tanislav 2022-02-06  171  	enum adxl367_odr	odr;
598203f0ba563c Cosmin Tanislav 2022-02-06  172  	enum adxl367_range	range;
598203f0ba563c Cosmin Tanislav 2022-02-06  173  
598203f0ba563c Cosmin Tanislav 2022-02-06  174  	unsigned int	act_threshold;
598203f0ba563c Cosmin Tanislav 2022-02-06  175  	unsigned int	act_time_ms;
598203f0ba563c Cosmin Tanislav 2022-02-06  176  	unsigned int	inact_threshold;
598203f0ba563c Cosmin Tanislav 2022-02-06  177  	unsigned int	inact_time_ms;
598203f0ba563c Cosmin Tanislav 2022-02-06  178  
598203f0ba563c Cosmin Tanislav 2022-02-06  179  	unsigned int	fifo_set_size;
598203f0ba563c Cosmin Tanislav 2022-02-06  180  	unsigned int	fifo_watermark;
598203f0ba563c Cosmin Tanislav 2022-02-06  181  
598203f0ba563c Cosmin Tanislav 2022-02-06  182  	__be16		fifo_buf[ADXL367_FIFO_SIZE] ____cacheline_aligned;
598203f0ba563c Cosmin Tanislav 2022-02-06  183  	__be16		sample_buf;
598203f0ba563c Cosmin Tanislav 2022-02-06  184  	u8		act_threshold_buf[2];
598203f0ba563c Cosmin Tanislav 2022-02-06  185  	u8		inact_time_buf[2];
598203f0ba563c Cosmin Tanislav 2022-02-06  186  	u8		status_buf[3];
598203f0ba563c Cosmin Tanislav 2022-02-06  187  };
598203f0ba563c Cosmin Tanislav 2022-02-06  188  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2022-02-14  3:07 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-02-06 21:13 [PATCH v4 0/5] Add ADXL367 driver Cosmin Tanislav
2022-02-06 21:13 ` [PATCH v4 1/5] iio: introduce mag_referenced Cosmin Tanislav
2022-02-06 21:13 ` [PATCH v4 2/5] iio: ABI: document mag_referenced Cosmin Tanislav
2022-02-06 21:13 ` [PATCH v4 3/5] iio: ABI: add note about configuring other attributes during buffer capture Cosmin Tanislav
2022-02-06 21:13 ` [PATCH v4 4/5] dt-bindings: iio: accel: add ADXL367 Cosmin Tanislav
2022-02-06 21:13 ` [PATCH v4 5/5] iio: accel: add ADXL367 driver Cosmin Tanislav
2022-02-11 14:32   ` Jonathan Cameron
  -- strict thread matches above, loose matches on Subject: below --
2022-02-11 19:42 kernel test robot
2022-02-14  3:07 kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.