All of lore.kernel.org
 help / color / mirror / Atom feed
* [hverkuil-media:cec-prepare-s-conn 5/5] drivers/media/cec/cec-notifier.c:219 cec_notifier_drm_conn_register() error: double locked 'n->lock' (orig line 195)
@ 2020-03-11 14:38 ` Dan Carpenter
  0 siblings, 0 replies; 2+ messages in thread
From: Dan Carpenter @ 2020-03-11 14:38 UTC (permalink / raw)
  To: kbuild

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

tree:   git://linuxtv.org/hverkuil/media_tree.git cec-prepare-s-conn
head:   6f7efe5f8bb0a93eab41692e3ea1ced81002a604
commit: 6f7efe5f8bb0a93eab41692e3ea1ced81002a604 [5/5] cec-notifier: introduce cec_notifier_drm_conn_register()

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

smatch warnings:
drivers/media/cec/cec-notifier.c:219 cec_notifier_drm_conn_register() error: double locked 'n->lock' (orig line 195)

git remote add hverkuil-media git://linuxtv.org/hverkuil/media_tree.git
git remote update hverkuil-media
git checkout 6f7efe5f8bb0a93eab41692e3ea1ced81002a604
vim +219 drivers/media/cec/cec-notifier.c

b48cb35c6a7bab drivers/media/cec/cec-notifier.c Hans Verkuil 2019-06-20  167  struct cec_notifier *
6f7efe5f8bb0a9 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  168  cec_notifier_drm_conn_register(struct device *card_dev,
6f7efe5f8bb0a9 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  169  			       const struct cec_connector_info *conn_info,
6f7efe5f8bb0a9 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  170  			       const char *name, struct device *hdmi_dev,
6f7efe5f8bb0a9 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  171  			       const char *port_name)
b48cb35c6a7bab drivers/media/cec/cec-notifier.c Hans Verkuil 2019-06-20  172  {
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  173  	struct cec_notifier *n = NULL;
b48cb35c6a7bab drivers/media/cec/cec-notifier.c Hans Verkuil 2019-06-20  174  
6f7efe5f8bb0a9 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  175  	if (port_name) {
6f7efe5f8bb0a9 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  176  		n = cec_notifier_find_port_name(card_dev, port_name);
6f7efe5f8bb0a9 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  177  	} else if (hdmi_dev) {
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  178  		n = cec_notifier_find_hdmi_dev(hdmi_dev);
6f7efe5f8bb0a9 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  179  	} else if (conn_info) {
6f7efe5f8bb0a9 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  180  		n = __cec_notifier_find_conn_info(conn_info);
6f7efe5f8bb0a9 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  181  		/* You shouldn't register the same connector twice */
6f7efe5f8bb0a9 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  182  		WARN_ON(n);
6f7efe5f8bb0a9 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  183  	}
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  184  
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  185  	if (n) {
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  186  		char *pname = NULL;
b48cb35c6a7bab drivers/media/cec/cec-notifier.c Hans Verkuil 2019-06-20  187  
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  188  		if (port_name) {
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  189  			pname = kstrdup(port_name, GFP_KERNEL);
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  190  			if (!pname) {
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  191  				cec_notifier_put(n);
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  192  				return NULL;
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  193  			}
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  194  		}
b48cb35c6a7bab drivers/media/cec/cec-notifier.c Hans Verkuil 2019-06-20 @195  		mutex_lock(&n->lock);
                                                                                        ^^^^^^^^^^^^^^^^^^^^
This has no unlock.

6f7efe5f8bb0a9 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  196  		WARN_ON(n->card_dev || n->hdmi_dev || n->port_name || n->name[0] ||
6f7efe5f8bb0a9 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  197  			n->conn_info.type);
6f7efe5f8bb0a9 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  198  		n->card_dev = card_dev;
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  199  		n->hdmi_dev = hdmi_dev;
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  200  		kfree(n->port_name);
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  201  		n->port_name = pname;
b48cb35c6a7bab drivers/media/cec/cec-notifier.c Hans Verkuil 2019-06-20  202  		if (conn_info)
b48cb35c6a7bab drivers/media/cec/cec-notifier.c Hans Verkuil 2019-06-20  203  			n->conn_info = *conn_info;
b48cb35c6a7bab drivers/media/cec/cec-notifier.c Hans Verkuil 2019-06-20  204  		else
b48cb35c6a7bab drivers/media/cec/cec-notifier.c Hans Verkuil 2019-06-20  205  			memset(&n->conn_info, 0, sizeof(n->conn_info));
6f7efe5f8bb0a9 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  206  		strscpy(n->name, name ? : "", sizeof(n->name));
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  207  		n->phys_addr = CEC_PHYS_ADDR_INVALID;
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  208  		mutex_unlock(&cec_notifiers_lock);
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  209  	} else {
6f7efe5f8bb0a9 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  210  		n = cec_notifier_alloc(card_dev, name, conn_info,
6f7efe5f8bb0a9 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  211  				       hdmi_dev, port_name);
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  212  		if (!n)
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  213  			return NULL;
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  214  		mutex_lock(&cec_notifiers_lock);
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  215  		list_add_tail(&n->head, &cec_notifiers);
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  216  		mutex_unlock(&cec_notifiers_lock);
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  217  	}
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  218  
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05 @219  	mutex_lock(&n->lock);
b48cb35c6a7bab drivers/media/cec/cec-notifier.c Hans Verkuil 2019-06-20  220  	if (n->cec_adap) {
b48cb35c6a7bab drivers/media/cec/cec-notifier.c Hans Verkuil 2019-06-20  221  		cec_phys_addr_invalidate(n->cec_adap);
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  222  		cec_s_conn_info(n->cec_adap, &n->conn_info);
b48cb35c6a7bab drivers/media/cec/cec-notifier.c Hans Verkuil 2019-06-20  223  	}
b48cb35c6a7bab drivers/media/cec/cec-notifier.c Hans Verkuil 2019-06-20  224  	mutex_unlock(&n->lock);
b48cb35c6a7bab drivers/media/cec/cec-notifier.c Hans Verkuil 2019-06-20  225  	return n;
b48cb35c6a7bab drivers/media/cec/cec-notifier.c Hans Verkuil 2019-06-20  226  }

---
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] 2+ messages in thread

* [hverkuil-media:cec-prepare-s-conn 5/5] drivers/media/cec/cec-notifier.c:219 cec_notifier_drm_conn_register() error: double locked 'n->lock' (orig line 195)
@ 2020-03-11 14:38 ` Dan Carpenter
  0 siblings, 0 replies; 2+ messages in thread
From: Dan Carpenter @ 2020-03-11 14:38 UTC (permalink / raw)
  To: kbuild-all

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

tree:   git://linuxtv.org/hverkuil/media_tree.git cec-prepare-s-conn
head:   6f7efe5f8bb0a93eab41692e3ea1ced81002a604
commit: 6f7efe5f8bb0a93eab41692e3ea1ced81002a604 [5/5] cec-notifier: introduce cec_notifier_drm_conn_register()

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

smatch warnings:
drivers/media/cec/cec-notifier.c:219 cec_notifier_drm_conn_register() error: double locked 'n->lock' (orig line 195)

git remote add hverkuil-media git://linuxtv.org/hverkuil/media_tree.git
git remote update hverkuil-media
git checkout 6f7efe5f8bb0a93eab41692e3ea1ced81002a604
vim +219 drivers/media/cec/cec-notifier.c

b48cb35c6a7bab drivers/media/cec/cec-notifier.c Hans Verkuil 2019-06-20  167  struct cec_notifier *
6f7efe5f8bb0a9 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  168  cec_notifier_drm_conn_register(struct device *card_dev,
6f7efe5f8bb0a9 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  169  			       const struct cec_connector_info *conn_info,
6f7efe5f8bb0a9 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  170  			       const char *name, struct device *hdmi_dev,
6f7efe5f8bb0a9 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  171  			       const char *port_name)
b48cb35c6a7bab drivers/media/cec/cec-notifier.c Hans Verkuil 2019-06-20  172  {
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  173  	struct cec_notifier *n = NULL;
b48cb35c6a7bab drivers/media/cec/cec-notifier.c Hans Verkuil 2019-06-20  174  
6f7efe5f8bb0a9 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  175  	if (port_name) {
6f7efe5f8bb0a9 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  176  		n = cec_notifier_find_port_name(card_dev, port_name);
6f7efe5f8bb0a9 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  177  	} else if (hdmi_dev) {
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  178  		n = cec_notifier_find_hdmi_dev(hdmi_dev);
6f7efe5f8bb0a9 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  179  	} else if (conn_info) {
6f7efe5f8bb0a9 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  180  		n = __cec_notifier_find_conn_info(conn_info);
6f7efe5f8bb0a9 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  181  		/* You shouldn't register the same connector twice */
6f7efe5f8bb0a9 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  182  		WARN_ON(n);
6f7efe5f8bb0a9 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  183  	}
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  184  
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  185  	if (n) {
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  186  		char *pname = NULL;
b48cb35c6a7bab drivers/media/cec/cec-notifier.c Hans Verkuil 2019-06-20  187  
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  188  		if (port_name) {
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  189  			pname = kstrdup(port_name, GFP_KERNEL);
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  190  			if (!pname) {
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  191  				cec_notifier_put(n);
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  192  				return NULL;
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  193  			}
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  194  		}
b48cb35c6a7bab drivers/media/cec/cec-notifier.c Hans Verkuil 2019-06-20 @195  		mutex_lock(&n->lock);
                                                                                        ^^^^^^^^^^^^^^^^^^^^
This has no unlock.

6f7efe5f8bb0a9 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  196  		WARN_ON(n->card_dev || n->hdmi_dev || n->port_name || n->name[0] ||
6f7efe5f8bb0a9 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  197  			n->conn_info.type);
6f7efe5f8bb0a9 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  198  		n->card_dev = card_dev;
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  199  		n->hdmi_dev = hdmi_dev;
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  200  		kfree(n->port_name);
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  201  		n->port_name = pname;
b48cb35c6a7bab drivers/media/cec/cec-notifier.c Hans Verkuil 2019-06-20  202  		if (conn_info)
b48cb35c6a7bab drivers/media/cec/cec-notifier.c Hans Verkuil 2019-06-20  203  			n->conn_info = *conn_info;
b48cb35c6a7bab drivers/media/cec/cec-notifier.c Hans Verkuil 2019-06-20  204  		else
b48cb35c6a7bab drivers/media/cec/cec-notifier.c Hans Verkuil 2019-06-20  205  			memset(&n->conn_info, 0, sizeof(n->conn_info));
6f7efe5f8bb0a9 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  206  		strscpy(n->name, name ? : "", sizeof(n->name));
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  207  		n->phys_addr = CEC_PHYS_ADDR_INVALID;
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  208  		mutex_unlock(&cec_notifiers_lock);
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  209  	} else {
6f7efe5f8bb0a9 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  210  		n = cec_notifier_alloc(card_dev, name, conn_info,
6f7efe5f8bb0a9 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  211  				       hdmi_dev, port_name);
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  212  		if (!n)
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  213  			return NULL;
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  214  		mutex_lock(&cec_notifiers_lock);
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  215  		list_add_tail(&n->head, &cec_notifiers);
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  216  		mutex_unlock(&cec_notifiers_lock);
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  217  	}
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  218  
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05 @219  	mutex_lock(&n->lock);
b48cb35c6a7bab drivers/media/cec/cec-notifier.c Hans Verkuil 2019-06-20  220  	if (n->cec_adap) {
b48cb35c6a7bab drivers/media/cec/cec-notifier.c Hans Verkuil 2019-06-20  221  		cec_phys_addr_invalidate(n->cec_adap);
f5dfc08548cf46 drivers/media/cec/cec-notifier.c Hans Verkuil 2020-03-05  222  		cec_s_conn_info(n->cec_adap, &n->conn_info);
b48cb35c6a7bab drivers/media/cec/cec-notifier.c Hans Verkuil 2019-06-20  223  	}
b48cb35c6a7bab drivers/media/cec/cec-notifier.c Hans Verkuil 2019-06-20  224  	mutex_unlock(&n->lock);
b48cb35c6a7bab drivers/media/cec/cec-notifier.c Hans Verkuil 2019-06-20  225  	return n;
b48cb35c6a7bab drivers/media/cec/cec-notifier.c Hans Verkuil 2019-06-20  226  }

---
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] 2+ messages in thread

end of thread, other threads:[~2020-03-11 14:38 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-03-11 14:38 [hverkuil-media:cec-prepare-s-conn 5/5] drivers/media/cec/cec-notifier.c:219 cec_notifier_drm_conn_register() error: double locked 'n->lock' (orig line 195) Dan Carpenter
2020-03-11 14:38 ` Dan Carpenter

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.