CC: [email protected]
CC: [email protected]
In-Reply-To: <[email protected]>
References: <[email protected]>
TO: Andy Shevchenko <[email protected]>
TO: Andy Shevchenko <[email protected]>
TO: Marc Zyngier <[email protected]>
TO: Matti Vaittinen <[email protected]>, Matti Vaittinen 
<[email protected]>
TO: Sergio Paracuellos <[email protected]>
TO: Chunyan Zhang <[email protected]>
TO: Bartosz Golaszewski <[email protected]>
TO: Baruch Siach <[email protected]>
TO: "Uwe Kleine-König" <[email protected]>
TO: Tony Lindgren <[email protected]>
TO: Nicolas Saenz Julienne <[email protected]>

Hi Andy,

I love your patch! Perhaps something to improve:

[auto build test WARNING on thierry-reding-pwm/for-next]
[also build test WARNING on rockchip/for-next v5.16-rc4]
[cannot apply to linusw-gpio/for-next next-20211206]
[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/Andy-Shevchenko/gpio-Get-rid-of-duplicate-of_node-assignment-in-the-drivers/20211203-051909
base:   
https://git.kernel.org/pub/scm/linux/kernel/git/thierry.reding/linux-pwm.git 
for-next
:::::: branch date: 4 days ago
:::::: commit date: 4 days ago
config: arm-randconfig-c002-20211205 
(https://download.01.org/0day-ci/archive/20211207/[email protected]/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 
6e8678903523019903222e4521a5e41af743cab0)
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/884ea5e4f18badef51842fc948d3b4f0fa538b06
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review 
Andy-Shevchenko/gpio-Get-rid-of-duplicate-of_node-assignment-in-the-drivers/20211203-051909
        git checkout 884ea5e4f18badef51842fc948d3b4f0fa538b06
        # 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 <[email protected]>


clang-analyzer warnings: (new ones prefixed by >>)
                   if (!(condition))                                       \
                   ^
   drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c:2729:7: note: Loop condition 
is false.  Exiting loop
                       FIELD_GET(MCP251XFD_REG_DEVID_ID_MASK, dev_id),
                       ^
   include/linux/bitfield.h:108:3: note: expanded from macro 'FIELD_GET'
                   __BF_FIELD_CHECK(_mask, _reg, 0U, "FIELD_GET: ");       \
                   ^
   include/linux/bitfield.h:52:3: note: expanded from macro '__BF_FIELD_CHECK'
                   BUILD_BUG_ON_MSG((_mask) > (typeof(_reg))~0ull,         \
                   ^
   include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
   #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
                                       ^
   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 {                                                            \
           ^
   drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c:2729:7: note: Assuming the 
condition is false
                       FIELD_GET(MCP251XFD_REG_DEVID_ID_MASK, dev_id),
                       ^
   include/linux/bitfield.h:108:3: note: expanded from macro 'FIELD_GET'
                   __BF_FIELD_CHECK(_mask, _reg, 0U, "FIELD_GET: ");       \
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/bitfield.h:54:3: note: expanded from macro '__BF_FIELD_CHECK'
                   __BUILD_BUG_ON_NOT_POWER_OF_2((_mask) +                 \
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:21:15: note: expanded from macro 
'__BUILD_BUG_ON_NOT_POWER_OF_2'
           BUILD_BUG_ON(((n) & ((n) - 1)) != 0)
           ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
   note: (skipping 2 expansions in backtrace; use -fmacro-backtrace-limit=0 to 
see all)
   include/linux/compiler_types.h:335:22: note: expanded from macro 
'compiletime_assert'
           _compiletime_assert(condition, msg, __compiletime_assert_, 
__COUNTER__)
           
~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/compiler_types.h:323:23: note: expanded from macro 
'_compiletime_assert'
           __compiletime_assert(condition, msg, prefix, suffix)
           ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/compiler_types.h:315:9: note: expanded from macro 
'__compiletime_assert'
                   if (!(condition))                                       \
                         ^~~~~~~~~
   drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c:2729:7: note: Taking false 
branch
                       FIELD_GET(MCP251XFD_REG_DEVID_ID_MASK, dev_id),
                       ^
   include/linux/bitfield.h:108:3: note: expanded from macro 'FIELD_GET'
                   __BF_FIELD_CHECK(_mask, _reg, 0U, "FIELD_GET: ");       \
                   ^
   include/linux/bitfield.h:54:3: note: expanded from macro '__BF_FIELD_CHECK'
                   __BUILD_BUG_ON_NOT_POWER_OF_2((_mask) +                 \
                   ^
   include/linux/build_bug.h:21:2: note: expanded from macro 
'__BUILD_BUG_ON_NOT_POWER_OF_2'
           BUILD_BUG_ON(((n) & ((n) - 1)) != 0)
           ^
   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))                                       \
                   ^
   drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c:2729:7: note: Loop condition 
is false.  Exiting loop
                       FIELD_GET(MCP251XFD_REG_DEVID_ID_MASK, dev_id),
                       ^
   include/linux/bitfield.h:108:3: note: expanded from macro 'FIELD_GET'
                   __BF_FIELD_CHECK(_mask, _reg, 0U, "FIELD_GET: ");       \
                   ^
   include/linux/bitfield.h:54:3: note: expanded from macro '__BF_FIELD_CHECK'
                   __BUILD_BUG_ON_NOT_POWER_OF_2((_mask) +                 \
                   ^
   include/linux/build_bug.h:21:2: note: expanded from macro 
'__BUILD_BUG_ON_NOT_POWER_OF_2'
           BUILD_BUG_ON(((n) & ((n) - 1)) != 0)
           ^
   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 {                                                            \
           ^
   drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c:2729:7: note: The left 
operand of '&' is a garbage value
                       FIELD_GET(MCP251XFD_REG_DEVID_ID_MASK, dev_id),
                       ^
   include/linux/bitfield.h:109:27: note: expanded from macro 'FIELD_GET'
                   (typeof(_mask))(((_reg) & (_mask)) >> __bf_shf(_mask)); \
                                     ~~~~  ^
   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 with check filters).
   2 warnings generated.
>> drivers/gpio/gpio-rda.c:200:22: warning: Value stored to 'np' during its 
>> initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct device_node *np = pdev->dev.of_node;
                               ^~   ~~~~~~~~~~~~~~~~~
   drivers/gpio/gpio-rda.c:200:22: note: Value stored to 'np' during its 
initialization is never read
           struct device_node *np = pdev->dev.of_node;
                               ^~   ~~~~~~~~~~~~~~~~~
   Suppressed 1 warnings (1 with check filters).
   2 warnings generated.
   drivers/misc/enclosure.c:186:2: 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(name, "enclosure_device:");
           ^~~~~~
   drivers/misc/enclosure.c:186:2: 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(name, "enclosure_device:");
           ^~~~~~
   drivers/misc/enclosure.c:187:2: warning: Call to function 'strcat' 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 'strlcat'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy]
           strcat(name, dev_name(&cdev->cdev));
           ^~~~~~
   drivers/misc/enclosure.c:187:2: note: Call to function 'strcat' 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 
'strlcat'. CWE-119
           strcat(name, dev_name(&cdev->cdev));
           ^~~~~~
   1 warning generated.
   drivers/misc/gehc-achc.c:152:2: warning: Undefined or garbage value returned 
to caller [clang-analyzer-core.uninitialized.UndefReturn]
           return ret;
           ^      ~~~
   drivers/misc/gehc-achc.c:142:2: note: 'ret' declared without an initial value
           int ret;
           ^~~~~~~
   drivers/misc/gehc-achc.c:145:14: note: Assuming 'i' is >= 'retries'
           for (i = 0; i < retries; i++) {
                       ^~~~~~~~~~~
   drivers/misc/gehc-achc.c:145:2: note: Loop condition is false. Execution 
continues on line 152
           for (i = 0; i < retries; i++) {
           ^
   drivers/misc/gehc-achc.c:152:2: note: Undefined or garbage value returned to 
caller
           return ret;
           ^      ~~~
   1 warning generated.
   drivers/misc/eeprom/at25.c:467:44: warning: The left operand of '&' is a 
garbage value [clang-analyzer-core.UndefinedBinaryOperatorResult]
           at25->nvmem_config.read_only = chip.flags & EE_READONLY;
                                          ~~~~~~~~~~ ^
   drivers/misc/eeprom/at25.c:389:6: note: Assuming 'match' is non-null
           if (match && !strcmp(match->compatible, "cypress,fm25"))
               ^~~~~
   drivers/misc/eeprom/at25.c:389:6: note: Left side of '&&' is true
   drivers/misc/eeprom/at25.c:389:2: note: Taking true branch
           if (match && !strcmp(match->compatible, "cypress,fm25"))
           ^
   drivers/misc/eeprom/at25.c:393:6: note: Assuming field 'platform_data' is 
null
           if (!spi->dev.platform_data) {
               ^~~~~~~~~~~~~~~~~~~~~~~
   drivers/misc/eeprom/at25.c:393:2: note: Taking true branch
           if (!spi->dev.platform_data) {
           ^
   drivers/misc/eeprom/at25.c:394:8: note: 'is_fram' is true
                   if (!is_fram) {
                        ^~~~~~~
   drivers/misc/eeprom/at25.c:394:3: note: Taking false branch
                   if (!is_fram) {
                   ^
   drivers/misc/eeprom/at25.c:407:6: note: 'sr' is >= 0
           if (sr < 0 || sr & AT25_SR_nRDY) {
               ^~
   drivers/misc/eeprom/at25.c:407:6: note: Left side of '||' is false
   drivers/misc/eeprom/at25.c:407:16: note: Assuming the condition is false
           if (sr < 0 || sr & AT25_SR_nRDY) {
                         ^~~~~~~~~~~~~~~~~
   drivers/misc/eeprom/at25.c:407:2: note: Taking false branch
           if (sr < 0 || sr & AT25_SR_nRDY) {
           ^
   drivers/misc/eeprom/at25.c:413:6: note: Assuming 'at25' is non-null
           if (!at25)
               ^~~~~
   drivers/misc/eeprom/at25.c:413:2: note: Taking false branch
           if (!at25)
           ^
   drivers/misc/eeprom/at25.c:416:2: note: Loop condition is false.  Exiting 
loop
           mutex_init(&at25->lock);
           ^
   include/linux/mutex.h:101:32: note: expanded from macro 'mutex_init'
   #define mutex_init(mutex)                                               \
                                                                           ^
   drivers/misc/eeprom/at25.c:421:6: note: 'is_fram' is true
           if (is_fram) {
               ^~~~~~~
   drivers/misc/eeprom/at25.c:421:2: note: Taking true branch
           if (is_fram) {
           ^
   drivers/misc/eeprom/at25.c:424:7: note: Assuming the condition is false
                   if (id[6] != 0xc2) {
                       ^~~~~~~~~~~~~
   drivers/misc/eeprom/at25.c:424:3: note: Taking false branch
                   if (id[6] != 0xc2) {
                   ^
   drivers/misc/eeprom/at25.c:430:7: note: Assuming the condition is false
                   if (id[7] < 0x21 || id[7] > 0x26) {
                       ^~~~~~~~~~~~
   drivers/misc/eeprom/at25.c:430:7: note: Left side of '||' is false
   drivers/misc/eeprom/at25.c:430:23: note: Assuming the condition is false
                   if (id[7] < 0x21 || id[7] > 0x26) {
                                       ^~~~~~~~~~~~
   drivers/misc/eeprom/at25.c:430:3: note: Taking false branch

vim +/np +200 drivers/gpio/gpio-rda.c

d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  197  
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  198  static int 
rda_gpio_probe(struct platform_device *pdev)
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  199  {
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21 @200    struct device_node *np 
= pdev->dev.of_node;
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  201    struct device *dev = 
&pdev->dev;
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  202    struct gpio_irq_chip 
*girq;
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  203    struct rda_gpio 
*rda_gpio;
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  204    u32 ngpios;
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  205    int ret;
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  206  
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  207    rda_gpio = 
devm_kzalloc(dev, sizeof(*rda_gpio), GFP_KERNEL);
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  208    if (!rda_gpio)
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  209            return -ENOMEM;
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  210  
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  211    ret = 
device_property_read_u32(dev, "ngpios", &ngpios);
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  212    if (ret < 0)
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  213            return ret;
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  214  
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  215    /*
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  216     * Not all ports have 
interrupt capability. For instance, on
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  217     * RDA8810PL, GPIOC 
doesn't support interrupt. So we must handle
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  218     * those also.
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  219     */
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  220    rda_gpio->irq = 
platform_get_irq(pdev, 0);
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  221  
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  222    rda_gpio->base = 
devm_platform_ioremap_resource(pdev, 0);
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  223    if 
(IS_ERR(rda_gpio->base))
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  224            return 
PTR_ERR(rda_gpio->base);
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  225  
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  226    
spin_lock_init(&rda_gpio->lock);
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  227  
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  228    ret = 
bgpio_init(&rda_gpio->chip, dev, 4,
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  229                     
rda_gpio->base + RDA_GPIO_VAL,
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  230                     
rda_gpio->base + RDA_GPIO_SET,
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  231                     
rda_gpio->base + RDA_GPIO_CLR,
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  232                     
rda_gpio->base + RDA_GPIO_OEN_SET_OUT,
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  233                     
rda_gpio->base + RDA_GPIO_OEN_SET_IN,
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  234                     
BGPIOF_READ_OUTPUT_REG_SET);
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  235    if (ret) {
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  236            dev_err(dev, 
"bgpio_init failed\n");
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  237            return ret;
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  238    }
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  239  
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  240    rda_gpio->chip.label = 
dev_name(dev);
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  241    rda_gpio->chip.ngpio = 
ngpios;
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  242    rda_gpio->chip.base = 
-1;
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  243  
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  244    if (rda_gpio->irq >= 0) 
{
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  245            
rda_gpio->irq_chip.name = "rda-gpio",
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  246            
rda_gpio->irq_chip.irq_ack = rda_gpio_irq_ack,
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  247            
rda_gpio->irq_chip.irq_mask = rda_gpio_irq_mask,
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  248            
rda_gpio->irq_chip.irq_unmask = rda_gpio_irq_unmask,
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  249            
rda_gpio->irq_chip.irq_set_type = rda_gpio_irq_set_type,
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  250            
rda_gpio->irq_chip.flags = IRQCHIP_SKIP_SET_WAKE,
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  251  
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  252            girq = 
&rda_gpio->chip.irq;
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  253            girq->chip = 
&rda_gpio->irq_chip;
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  254            girq->handler = 
handle_bad_irq;
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  255            
girq->default_type = IRQ_TYPE_NONE;
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  256            
girq->parent_handler = rda_gpio_irq_handler;
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  257            
girq->parent_handler_data = rda_gpio;
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  258            
girq->num_parents = 1;
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  259            girq->parents = 
devm_kcalloc(dev, 1,
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  260                            
             sizeof(*girq->parents),
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  261                            
             GFP_KERNEL);
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  262            if 
(!girq->parents)
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  263                    return 
-ENOMEM;
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  264            
girq->parents[0] = rda_gpio->irq;
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  265    }
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  266  
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  267    
platform_set_drvdata(pdev, rda_gpio);
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  268  
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  269    return 
devm_gpiochip_add_data(dev, &rda_gpio->chip, rda_gpio);
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  270  }
d57eb825e0dc6f Manivannan Sadhasivam 2019-10-21  271  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to