[dm-devel] [dm:for-next 2/3] drivers/md/dm-mpath.c:821:37: error: passing argument 1 of 'strcmp' from incompatible pointer type

kbuild test robot lkp at intel.com
Mon Sep 17 16:16:19 UTC 2018


tree:   https://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm.git for-next
head:   9c01fc7e4f3b269a5550014c16ba2fa15b90fc45
commit: 560e9814d061de1dce3328630846025d653dea7d [2/3] dm mpath: fix attached_handler_name leak and dangling hw_handler_name pointer
config: x86_64-randconfig-x019-201837 (attached as .config)
compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
reproduce:
        git checkout 560e9814d061de1dce3328630846025d653dea7d
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All error/warnings (new ones prefixed by >>):

   drivers/md/dm-mpath.c: In function 'setup_scsi_dh':
>> drivers/md/dm-mpath.c:821:37: error: passing argument 1 of 'strcmp' from incompatible pointer type [-Werror=incompatible-pointer-types]
       if (m->hw_handler_name && strcmp(attached_handler_name, m->hw_handler_name)) {
                                        ^~~~~~~~~~~~~~~~~~~~~
   In file included from include/linux/bitmap.h:9:0,
                    from include/linux/cpumask.h:12,
                    from arch/x86/include/asm/cpumask.h:5,
                    from arch/x86/include/asm/msr.h:11,
                    from arch/x86/include/asm/processor.h:21,
                    from arch/x86/include/asm/cpufeature.h:5,
                    from arch/x86/include/asm/thread_info.h:53,
                    from include/linux/thread_info.h:38,
                    from arch/x86/include/asm/preempt.h:7,
                    from include/linux/preempt.h:81,
                    from include/linux/spinlock.h:51,
                    from include/linux/wait.h:9,
                    from include/linux/wait_bit.h:8,
                    from include/linux/fs.h:6,
                    from include/linux/highmem.h:5,
                    from include/linux/bio.h:21,
                    from include/linux/device-mapper.h:11,
                    from drivers/md/dm-mpath.c:8:
   include/linux/string.h:44:12: note: expected 'const char *' but argument is of type 'char **'
    extern int strcmp(const char *,const char *);
               ^~~~~~
   drivers/md/dm-mpath.c: In function 'parse_path':
>> drivers/md/dm-mpath.c:891:24: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
     attached_handler_name = scsi_dh_attached_handler_name(q, GFP_KERNEL);
                           ^
   cc1: some warnings being treated as errors

vim +/strcmp +821 drivers/md/dm-mpath.c

^1da177e Linus Torvalds      2005-04-16  807  
e8f74a0f Mike Snitzer        2018-03-12  808  static int setup_scsi_dh(struct block_device *bdev, struct multipath *m,
560e9814 Mike Snitzer        2018-09-17  809  			 char **attached_handler_name, char **error)
^1da177e Linus Torvalds      2005-04-16  810  {
848b8aef Mike Snitzer        2017-12-10  811  	struct request_queue *q = bdev_get_queue(bdev);
848b8aef Mike Snitzer        2017-12-10  812  	int r;
a58a935d Mike Snitzer        2012-07-27  813  
518257b1 Mike Snitzer        2016-03-17  814  	if (test_bit(MPATHF_RETAIN_ATTACHED_HW_HANDLER, &m->flags)) {
1bab0de0 Christoph Hellwig   2015-08-27  815  retain:
560e9814 Mike Snitzer        2018-09-17  816  		if (*attached_handler_name) {
a58a935d Mike Snitzer        2012-07-27  817  			/*
54cd640d tang.junhui         2016-11-24  818  			 * Clear any hw_handler_params associated with a
54cd640d tang.junhui         2016-11-24  819  			 * handler that isn't already attached.
54cd640d tang.junhui         2016-11-24  820  			 */
54cd640d tang.junhui         2016-11-24 @821  			if (m->hw_handler_name && strcmp(attached_handler_name, m->hw_handler_name)) {
54cd640d tang.junhui         2016-11-24  822  				kfree(m->hw_handler_params);
54cd640d tang.junhui         2016-11-24  823  				m->hw_handler_params = NULL;
54cd640d tang.junhui         2016-11-24  824  			}
54cd640d tang.junhui         2016-11-24  825  
54cd640d tang.junhui         2016-11-24  826  			/*
a58a935d Mike Snitzer        2012-07-27  827  			 * Reset hw_handler_name to match the attached handler
a58a935d Mike Snitzer        2012-07-27  828  			 *
a58a935d Mike Snitzer        2012-07-27  829  			 * NB. This modifies the table line to show the actual
a58a935d Mike Snitzer        2012-07-27  830  			 * handler instead of the original table passed in.
a58a935d Mike Snitzer        2012-07-27  831  			 */
a58a935d Mike Snitzer        2012-07-27  832  			kfree(m->hw_handler_name);
560e9814 Mike Snitzer        2018-09-17  833  			m->hw_handler_name = *attached_handler_name;
560e9814 Mike Snitzer        2018-09-17  834  			*attached_handler_name = NULL;
a58a935d Mike Snitzer        2012-07-27  835  		}
a58a935d Mike Snitzer        2012-07-27  836  	}
a0cf7ea9 Hannes Reinecke     2009-06-22  837  
a58a935d Mike Snitzer        2012-07-27  838  	if (m->hw_handler_name) {
a0cf7ea9 Hannes Reinecke     2009-06-22  839  		r = scsi_dh_attach(q, m->hw_handler_name);
a0cf7ea9 Hannes Reinecke     2009-06-22  840  		if (r == -EBUSY) {
1bab0de0 Christoph Hellwig   2015-08-27  841  			char b[BDEVNAME_SIZE];
a0cf7ea9 Hannes Reinecke     2009-06-22  842  
1bab0de0 Christoph Hellwig   2015-08-27  843  			printk(KERN_INFO "dm-mpath: retaining handler on device %s\n",
848b8aef Mike Snitzer        2017-12-10  844  			       bdevname(bdev, b));
1bab0de0 Christoph Hellwig   2015-08-27  845  			goto retain;
1bab0de0 Christoph Hellwig   2015-08-27  846  		}
ae11b1b3 Hannes Reinecke     2008-07-17  847  		if (r < 0) {
848b8aef Mike Snitzer        2017-12-10  848  			*error = "error attaching hardware handler";
848b8aef Mike Snitzer        2017-12-10  849  			return r;
ae11b1b3 Hannes Reinecke     2008-07-17  850  		}
2bfd2e13 Chandra Seetharaman 2009-08-03  851  
2bfd2e13 Chandra Seetharaman 2009-08-03  852  		if (m->hw_handler_params) {
2bfd2e13 Chandra Seetharaman 2009-08-03  853  			r = scsi_dh_set_params(q, m->hw_handler_params);
2bfd2e13 Chandra Seetharaman 2009-08-03  854  			if (r < 0) {
848b8aef Mike Snitzer        2017-12-10  855  				*error = "unable to set hardware handler parameters";
848b8aef Mike Snitzer        2017-12-10  856  				return r;
848b8aef Mike Snitzer        2017-12-10  857  			}
848b8aef Mike Snitzer        2017-12-10  858  		}
848b8aef Mike Snitzer        2017-12-10  859  	}
848b8aef Mike Snitzer        2017-12-10  860  
848b8aef Mike Snitzer        2017-12-10  861  	return 0;
848b8aef Mike Snitzer        2017-12-10  862  }
848b8aef Mike Snitzer        2017-12-10  863  
848b8aef Mike Snitzer        2017-12-10  864  static struct pgpath *parse_path(struct dm_arg_set *as, struct path_selector *ps,
848b8aef Mike Snitzer        2017-12-10  865  				 struct dm_target *ti)
848b8aef Mike Snitzer        2017-12-10  866  {
848b8aef Mike Snitzer        2017-12-10  867  	int r;
848b8aef Mike Snitzer        2017-12-10  868  	struct pgpath *p;
848b8aef Mike Snitzer        2017-12-10  869  	struct multipath *m = ti->private;
e8f74a0f Mike Snitzer        2018-03-12  870  	struct request_queue *q;
560e9814 Mike Snitzer        2018-09-17  871  	char *attached_handler_name = NULL;
848b8aef Mike Snitzer        2017-12-10  872  
848b8aef Mike Snitzer        2017-12-10  873  	/* we need at least a path arg */
848b8aef Mike Snitzer        2017-12-10  874  	if (as->argc < 1) {
848b8aef Mike Snitzer        2017-12-10  875  		ti->error = "no device given";
848b8aef Mike Snitzer        2017-12-10  876  		return ERR_PTR(-EINVAL);
848b8aef Mike Snitzer        2017-12-10  877  	}
848b8aef Mike Snitzer        2017-12-10  878  
848b8aef Mike Snitzer        2017-12-10  879  	p = alloc_pgpath();
848b8aef Mike Snitzer        2017-12-10  880  	if (!p)
848b8aef Mike Snitzer        2017-12-10  881  		return ERR_PTR(-ENOMEM);
848b8aef Mike Snitzer        2017-12-10  882  
848b8aef Mike Snitzer        2017-12-10  883  	r = dm_get_device(ti, dm_shift_arg(as), dm_table_get_mode(ti->table),
848b8aef Mike Snitzer        2017-12-10  884  			  &p->path.dev);
848b8aef Mike Snitzer        2017-12-10  885  	if (r) {
848b8aef Mike Snitzer        2017-12-10  886  		ti->error = "error getting device";
2bfd2e13 Chandra Seetharaman 2009-08-03  887  		goto bad;
2bfd2e13 Chandra Seetharaman 2009-08-03  888  	}
848b8aef Mike Snitzer        2017-12-10  889  
e8f74a0f Mike Snitzer        2018-03-12  890  	q = bdev_get_queue(p->path.dev->bdev);
e8f74a0f Mike Snitzer        2018-03-12 @891  	attached_handler_name = scsi_dh_attached_handler_name(q, GFP_KERNEL);
e457edf0 Mike Snitzer        2018-03-29  892  	if (attached_handler_name || m->hw_handler_name) {
848b8aef Mike Snitzer        2017-12-10  893  		INIT_DELAYED_WORK(&p->activate_path, activate_path_work);
560e9814 Mike Snitzer        2018-09-17  894  		r = setup_scsi_dh(p->path.dev->bdev, m, &attached_handler_name, &ti->error);
848b8aef Mike Snitzer        2017-12-10  895  		if (r) {
848b8aef Mike Snitzer        2017-12-10  896  			dm_put_device(ti, p->path.dev);
848b8aef Mike Snitzer        2017-12-10  897  			goto bad;
2bfd2e13 Chandra Seetharaman 2009-08-03  898  		}
ae11b1b3 Hannes Reinecke     2008-07-17  899  	}
ae11b1b3 Hannes Reinecke     2008-07-17  900  
^1da177e Linus Torvalds      2005-04-16  901  	r = ps->type->add_path(ps, &p->path, as->argc, as->argv, &ti->error);
^1da177e Linus Torvalds      2005-04-16  902  	if (r) {
^1da177e Linus Torvalds      2005-04-16  903  		dm_put_device(ti, p->path.dev);
^1da177e Linus Torvalds      2005-04-16  904  		goto bad;
^1da177e Linus Torvalds      2005-04-16  905  	}
^1da177e Linus Torvalds      2005-04-16  906  
^1da177e Linus Torvalds      2005-04-16  907  	return p;
^1da177e Linus Torvalds      2005-04-16  908   bad:
560e9814 Mike Snitzer        2018-09-17  909  	kfree(attached_handler_name);
^1da177e Linus Torvalds      2005-04-16  910  	free_pgpath(p);
01460f35 Benjamin Marzinski  2008-10-10  911  	return ERR_PTR(r);
^1da177e Linus Torvalds      2005-04-16  912  }
^1da177e Linus Torvalds      2005-04-16  913  

:::::: The code at line 821 was first introduced by commit
:::::: 54cd640d20de46bb54747286ca19f3995be921f2 dm mpath: use hw_handler_params if attached hw_handler is same as requested

:::::: TO: tang.junhui <tang.junhui at zte.com.cn>
:::::: CC: Mike Snitzer <snitzer at redhat.com>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 24418 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/dm-devel/attachments/20180918/43b85c54/attachment.gz>


More information about the dm-devel mailing list