Hi Arnaud,

I love your patch! Perhaps something to improve:

[auto build test WARNING on linus/master]
[also build test WARNING on v5.11-rc1 next-20201223]
[cannot apply to rpmsg/for-next]
[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/Arnaud-Pouliquen/introduce-generic-IOCTL-interface-for-RPMsg-channels-management/20201222-190521
base:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
8653b778e454a7708847aeafe689bce07aeeb94e
config: x86_64-randconfig-a016-20201221 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 
cee1e7d14f4628d6174b33640d502bff3b54ae45)
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 x86_64 cross compiling tool for clang build
        # apt-get install binutils-x86-64-linux-gnu
        # 
https://github.com/0day-ci/linux/commit/532ff49403675dd41b19bcc2b03ca22a08443f8d
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review 
Arnaud-Pouliquen/introduce-generic-IOCTL-interface-for-RPMsg-channels-management/20201222-190521
        git checkout 532ff49403675dd41b19bcc2b03ca22a08443f8d
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>

All warnings (new ones prefixed by >>):

>> drivers/rpmsg/virtio_rpmsg_bus.c:947:7: warning: variable 'rpdev_ctrl' is 
>> used uninitialized whenever 'if' condition is true 
>> [-Wsometimes-uninitialized]
                   if (err)
                       ^~~
   drivers/rpmsg/virtio_rpmsg_bus.c:979:32: note: uninitialized use occurs here
           kfree(to_virtio_rpmsg_channel(rpdev_ctrl));
                                         ^~~~~~~~~~
   drivers/rpmsg/virtio_rpmsg_bus.c:111:15: note: expanded from macro 
'to_virtio_rpmsg_channel'
           container_of(_rpdev, struct virtio_rpmsg_channel, rpdev)
                        ^~~~~~
   include/linux/kernel.h:693:26: note: expanded from macro 'container_of'
           void *__mptr = (void *)(ptr);                                   \
                                   ^~~
   drivers/rpmsg/virtio_rpmsg_bus.c:947:3: note: remove the 'if' if its 
condition is always false
                   if (err)
                   ^~~~~~~~
   drivers/rpmsg/virtio_rpmsg_bus.c:930:7: warning: variable 'rpdev_ctrl' is 
used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
                   if (!vch) {
                       ^~~~
   drivers/rpmsg/virtio_rpmsg_bus.c:979:32: note: uninitialized use occurs here
           kfree(to_virtio_rpmsg_channel(rpdev_ctrl));
                                         ^~~~~~~~~~
   drivers/rpmsg/virtio_rpmsg_bus.c:111:15: note: expanded from macro 
'to_virtio_rpmsg_channel'
           container_of(_rpdev, struct virtio_rpmsg_channel, rpdev)
                        ^~~~~~
   include/linux/kernel.h:693:26: note: expanded from macro 'container_of'
           void *__mptr = (void *)(ptr);                                   \
                                   ^~~
   drivers/rpmsg/virtio_rpmsg_bus.c:930:3: note: remove the 'if' if its 
condition is always false
                   if (!vch) {
                   ^~~~~~~~~~~
   drivers/rpmsg/virtio_rpmsg_bus.c:853:44: note: initialize the variable 
'rpdev_ctrl' to silence this warning
           struct rpmsg_device *rpdev_ns, *rpdev_ctrl;
                                                     ^
                                                      = NULL
   2 warnings generated.


vim +947 drivers/rpmsg/virtio_rpmsg_bus.c

532ff49403675dd Arnaud Pouliquen     2020-12-22  845  
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  846  static int 
rpmsg_probe(struct virtio_device *vdev)
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  847  {
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  848    vq_callback_t *vq_cbs[] 
= { rpmsg_recv_done, rpmsg_xmit_done };
f7ad26ff952b3ca Stefan Hajnoczi      2015-12-17  849    static const char * 
const names[] = { "input", "output" };
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  850    struct virtqueue 
*vqs[2];
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  851    struct virtproc_info 
*vrp;
950a7388f02bf77 Arnaud Pouliquen     2020-11-20  852    struct 
virtio_rpmsg_channel *vch;
532ff49403675dd Arnaud Pouliquen     2020-12-22  853    struct rpmsg_device 
*rpdev_ns, *rpdev_ctrl;
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  854    void *bufs_va;
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  855    int err = 0, i;
b1b9891441fa33f Suman Anna           2014-09-16  856    size_t total_buf_space;
71e4b8bf0482fc7 Michael S. Tsirkin   2015-03-12  857    bool notify;
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  858  
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  859    vrp = 
kzalloc(sizeof(*vrp), GFP_KERNEL);
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  860    if (!vrp)
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  861            return -ENOMEM;
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  862  
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  863    vrp->vdev = vdev;
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  864  
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  865    
idr_init(&vrp->endpoints);
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  866    
mutex_init(&vrp->endpoints_lock);
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  867    
mutex_init(&vrp->tx_lock);
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  868    
init_waitqueue_head(&vrp->sendq);
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  869  
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  870    /* We expect two 
virtqueues, rx and tx (and in this order) */
9b2bbdb22758845 Michael S. Tsirkin   2017-03-06  871    err = 
virtio_find_vqs(vdev, 2, vqs, vq_cbs, names, NULL);
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  872    if (err)
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  873            goto free_vrp;
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  874  
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  875    vrp->rvq = vqs[0];
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  876    vrp->svq = vqs[1];
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  877  
b1b9891441fa33f Suman Anna           2014-09-16  878    /* we expect symmetric 
tx/rx vrings */
b1b9891441fa33f Suman Anna           2014-09-16  879    
WARN_ON(virtqueue_get_vring_size(vrp->rvq) !=
b1b9891441fa33f Suman Anna           2014-09-16  880            
virtqueue_get_vring_size(vrp->svq));
b1b9891441fa33f Suman Anna           2014-09-16  881  
b1b9891441fa33f Suman Anna           2014-09-16  882    /* we need less buffers 
if vrings are small */
b1b9891441fa33f Suman Anna           2014-09-16  883    if 
(virtqueue_get_vring_size(vrp->rvq) < MAX_RPMSG_NUM_BUFS / 2)
b1b9891441fa33f Suman Anna           2014-09-16  884            vrp->num_bufs = 
virtqueue_get_vring_size(vrp->rvq) * 2;
b1b9891441fa33f Suman Anna           2014-09-16  885    else
b1b9891441fa33f Suman Anna           2014-09-16  886            vrp->num_bufs = 
MAX_RPMSG_NUM_BUFS;
b1b9891441fa33f Suman Anna           2014-09-16  887  
f93848f9eeb0f87 Loic Pallardy        2017-03-28  888    vrp->buf_size = 
MAX_RPMSG_BUF_SIZE;
f93848f9eeb0f87 Loic Pallardy        2017-03-28  889  
f93848f9eeb0f87 Loic Pallardy        2017-03-28  890    total_buf_space = 
vrp->num_bufs * vrp->buf_size;
b1b9891441fa33f Suman Anna           2014-09-16  891  
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  892    /* allocate coherent 
memory for the buffers */
d999b622fcfb392 Loic Pallardy        2019-01-10  893    bufs_va = 
dma_alloc_coherent(vdev->dev.parent,
b1b9891441fa33f Suman Anna           2014-09-16  894                            
     total_buf_space, &vrp->bufs_dma,
b1b9891441fa33f Suman Anna           2014-09-16  895                            
     GFP_KERNEL);
3119b487e03650b Wei Yongjun          2013-04-29  896    if (!bufs_va) {
3119b487e03650b Wei Yongjun          2013-04-29  897            err = -ENOMEM;
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  898            goto vqs_del;
3119b487e03650b Wei Yongjun          2013-04-29  899    }
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  900  
de4064af76537f1 Suman Anna           2018-10-23  901    dev_dbg(&vdev->dev, 
"buffers: va %pK, dma %pad\n",
8d95b322ba34b15 Anna, Suman          2016-08-12  902            bufs_va, 
&vrp->bufs_dma);
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  903  
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  904    /* half of the buffers 
is dedicated for RX */
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  905    vrp->rbufs = bufs_va;
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  906  
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  907    /* and half is 
dedicated for TX */
b1b9891441fa33f Suman Anna           2014-09-16  908    vrp->sbufs = bufs_va + 
total_buf_space / 2;
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  909  
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  910    /* set up the receive 
buffers */
b1b9891441fa33f Suman Anna           2014-09-16  911    for (i = 0; i < 
vrp->num_bufs / 2; i++) {
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  912            struct 
scatterlist sg;
f93848f9eeb0f87 Loic Pallardy        2017-03-28  913            void *cpu_addr 
= vrp->rbufs + i * vrp->buf_size;
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  914  
9dd87c2af651b09 Loic Pallardy        2017-03-28  915            
rpmsg_sg_init(&sg, cpu_addr, vrp->buf_size);
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  916  
cee51d69a45b6ce Rusty Russell        2013-03-20  917            err = 
virtqueue_add_inbuf(vrp->rvq, &sg, 1, cpu_addr,
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  918                            
          GFP_KERNEL);
57e1a37347d31c6 Rusty Russell        2012-10-16  919            WARN_ON(err); 
/* sanity check; this can't really happen */
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  920    }
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  921  
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  922    /* suppress 
"tx-complete" interrupts */
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  923    
virtqueue_disable_cb(vrp->svq);
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  924  
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  925    vdev->priv = vrp;
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  926  
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  927    /* if supported by the 
remote processor, enable the name service */
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  928    if 
(virtio_has_feature(vdev, VIRTIO_RPMSG_F_NS)) {
950a7388f02bf77 Arnaud Pouliquen     2020-11-20  929            vch = 
kzalloc(sizeof(*vch), GFP_KERNEL);
950a7388f02bf77 Arnaud Pouliquen     2020-11-20  930            if (!vch) {
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  931                    err = 
-ENOMEM;
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  932                    goto 
free_coherent;
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  933            }
950a7388f02bf77 Arnaud Pouliquen     2020-11-20  934  
950a7388f02bf77 Arnaud Pouliquen     2020-11-20  935            /* Link the 
channel to our vrp */
950a7388f02bf77 Arnaud Pouliquen     2020-11-20  936            vch->vrp = vrp;
950a7388f02bf77 Arnaud Pouliquen     2020-11-20  937  
950a7388f02bf77 Arnaud Pouliquen     2020-11-20  938            /* Assign 
public information to the rpmsg_device */
950a7388f02bf77 Arnaud Pouliquen     2020-11-20  939            rpdev_ns = 
&vch->rpdev;
950a7388f02bf77 Arnaud Pouliquen     2020-11-20  940            rpdev_ns->ops = 
&virtio_rpmsg_ops;
950a7388f02bf77 Arnaud Pouliquen     2020-11-20  941            
rpdev_ns->little_endian = virtio_is_little_endian(vrp->vdev);
950a7388f02bf77 Arnaud Pouliquen     2020-11-20  942  
950a7388f02bf77 Arnaud Pouliquen     2020-11-20  943            
rpdev_ns->dev.parent = &vrp->vdev->dev;
950a7388f02bf77 Arnaud Pouliquen     2020-11-20  944            
rpdev_ns->dev.release = virtio_rpmsg_release_device;
950a7388f02bf77 Arnaud Pouliquen     2020-11-20  945  
950a7388f02bf77 Arnaud Pouliquen     2020-11-20  946            err = 
rpmsg_ns_register_device(rpdev_ns);
950a7388f02bf77 Arnaud Pouliquen     2020-11-20 @947            if (err)
950a7388f02bf77 Arnaud Pouliquen     2020-11-20  948                    goto 
free_coherent;
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  949    }
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  950  
532ff49403675dd Arnaud Pouliquen     2020-12-22  951    rpdev_ctrl = 
rpmsg_virtio_add_char_dev(vdev);
532ff49403675dd Arnaud Pouliquen     2020-12-22  952    if (IS_ERR(rpdev_ctrl)) 
{
532ff49403675dd Arnaud Pouliquen     2020-12-22  953            err = 
PTR_ERR(rpdev_ctrl);
532ff49403675dd Arnaud Pouliquen     2020-12-22  954            goto 
free_coherent;
532ff49403675dd Arnaud Pouliquen     2020-12-22  955    }
71e4b8bf0482fc7 Michael S. Tsirkin   2015-03-12  956    /*
71e4b8bf0482fc7 Michael S. Tsirkin   2015-03-12  957     * Prepare to kick but 
don't notify yet - we can't do this before
71e4b8bf0482fc7 Michael S. Tsirkin   2015-03-12  958     * device is ready.
71e4b8bf0482fc7 Michael S. Tsirkin   2015-03-12  959     */
71e4b8bf0482fc7 Michael S. Tsirkin   2015-03-12  960    notify = 
virtqueue_kick_prepare(vrp->rvq);
71e4b8bf0482fc7 Michael S. Tsirkin   2015-03-12  961  
71e4b8bf0482fc7 Michael S. Tsirkin   2015-03-12  962    /* From this point on, 
we can notify and get callbacks. */
71e4b8bf0482fc7 Michael S. Tsirkin   2015-03-12  963    
virtio_device_ready(vdev);
71e4b8bf0482fc7 Michael S. Tsirkin   2015-03-12  964  
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  965    /* tell the remote 
processor it can start sending messages */
71e4b8bf0482fc7 Michael S. Tsirkin   2015-03-12  966    /*
71e4b8bf0482fc7 Michael S. Tsirkin   2015-03-12  967     * this might be 
concurrent with callbacks, but we are only
71e4b8bf0482fc7 Michael S. Tsirkin   2015-03-12  968     * doing notify, not a 
full kick here, so that's ok.
71e4b8bf0482fc7 Michael S. Tsirkin   2015-03-12  969     */
71e4b8bf0482fc7 Michael S. Tsirkin   2015-03-12  970    if (notify)
71e4b8bf0482fc7 Michael S. Tsirkin   2015-03-12  971            
virtqueue_notify(vrp->rvq);
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  972  
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  973    dev_info(&vdev->dev, 
"rpmsg host is online\n");
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  974  
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  975    return 0;
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  976  
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  977  free_coherent:
950a7388f02bf77 Arnaud Pouliquen     2020-11-20  978    kfree(vch);
532ff49403675dd Arnaud Pouliquen     2020-12-22  979    
kfree(to_virtio_rpmsg_channel(rpdev_ctrl));
d999b622fcfb392 Loic Pallardy        2019-01-10  980    
dma_free_coherent(vdev->dev.parent, total_buf_space,
eeb0074f36d1ab0 Fernando Guzman Lugo 2012-08-29  981                      
bufs_va, vrp->bufs_dma);
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  982  vqs_del:
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  983    
vdev->config->del_vqs(vrp->vdev);
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  984  free_vrp:
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  985    kfree(vrp);
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  986    return err;
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  987  }
bcabbccabffe732 Ohad Ben-Cohen       2011-10-20  988  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]

Attachment: .config.gz
Description: application/gzip

Reply via email to