All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dan Carpenter <dan.carpenter@oracle.com>
To: kbuild@lists.01.org
Subject: [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)
Date: Wed, 11 Mar 2020 17:38:38 +0300	[thread overview]
Message-ID: <20200311143838.GF11561@kadam> (raw)

[-- 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

WARNING: multiple messages have this Message-ID (diff)
From: Dan Carpenter <dan.carpenter@oracle.com>
To: kbuild-all@lists.01.org
Subject: [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)
Date: Wed, 11 Mar 2020 17:38:38 +0300	[thread overview]
Message-ID: <20200311143838.GF11561@kadam> (raw)

[-- 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

             reply	other threads:[~2020-03-11 14:38 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-11 14:38 Dan Carpenter [this message]
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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200311143838.GF11561@kadam \
    --to=dan.carpenter@oracle.com \
    --cc=kbuild@lists.01.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.