All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: [ammarfaizi2-block:netdev/net-next/main 20/29] net/core/devlink.c:6392 devlink_nl_cmd_region_new() warn: inconsistent returns '&region->snapshot_lock'.
Date: Sun, 31 Jul 2022 16:01:33 +0800	[thread overview]
Message-ID: <202207311503.QBFSGqiL-lkp@intel.com> (raw)

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

CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
CC: Ammar Faizi <ammarfaizi2@gnuweeb.org>
CC: "GNU/Weeb Mailing List" <gwml@vger.gnuweeb.org>
CC: linux-kernel(a)vger.kernel.org
TO: Jiri Pirko <jiri@nvidia.com>
CC: Jakub Kicinski <kuba@kernel.org>

tree:   https://github.com/ammarfaizi2/linux-block netdev/net-next/main
head:   63757225a93353bc2ce4499af5501eabdbbf23f9
commit: 2dec18ad826f52658f7781ee995d236cc449b678 [20/29] net: devlink: remove region snapshots list dependency on devlink->lock
:::::: branch date: 27 hours ago
:::::: commit date: 2 days ago
config: arc-randconfig-m041-20220731 (https://download.01.org/0day-ci/archive/20220731/202207311503.QBFSGqiL-lkp(a)intel.com/config)
compiler: arceb-elf-gcc (GCC) 12.1.0

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

New smatch warnings:
net/core/devlink.c:6392 devlink_nl_cmd_region_new() warn: inconsistent returns '&region->snapshot_lock'.

Old smatch warnings:
net/core/devlink.c:7284 devlink_fmsg_prepare_skb() error: uninitialized symbol 'err'.
arch/arc/include/asm/thread_info.h:62 current_thread_info() error: uninitialized symbol 'sp'.

vim +6392 net/core/devlink.c

866319bb943761 Alex Vesker    2018-07-12  6270  
b9a17abfde842b Jacob Keller   2020-03-26  6271  static int
b9a17abfde842b Jacob Keller   2020-03-26  6272  devlink_nl_cmd_region_new(struct sk_buff *skb, struct genl_info *info)
b9a17abfde842b Jacob Keller   2020-03-26  6273  {
b9a17abfde842b Jacob Keller   2020-03-26  6274  	struct devlink *devlink = info->user_ptr[0];
043b3e22768d5d Jakub Kicinski 2020-05-01  6275  	struct devlink_snapshot *snapshot;
544e7c33ec2f80 Andrew Lunn    2020-10-04  6276  	struct devlink_port *port = NULL;
043b3e22768d5d Jakub Kicinski 2020-05-01  6277  	struct nlattr *snapshot_id_attr;
b9a17abfde842b Jacob Keller   2020-03-26  6278  	struct devlink_region *region;
b9a17abfde842b Jacob Keller   2020-03-26  6279  	const char *region_name;
544e7c33ec2f80 Andrew Lunn    2020-10-04  6280  	unsigned int index;
b9a17abfde842b Jacob Keller   2020-03-26  6281  	u32 snapshot_id;
b9a17abfde842b Jacob Keller   2020-03-26  6282  	u8 *data;
b9a17abfde842b Jacob Keller   2020-03-26  6283  	int err;
b9a17abfde842b Jacob Keller   2020-03-26  6284  
b9a17abfde842b Jacob Keller   2020-03-26  6285  	if (!info->attrs[DEVLINK_ATTR_REGION_NAME]) {
b9a17abfde842b Jacob Keller   2020-03-26  6286  		NL_SET_ERR_MSG_MOD(info->extack, "No region name provided");
b9a17abfde842b Jacob Keller   2020-03-26  6287  		return -EINVAL;
b9a17abfde842b Jacob Keller   2020-03-26  6288  	}
b9a17abfde842b Jacob Keller   2020-03-26  6289  
b9a17abfde842b Jacob Keller   2020-03-26  6290  	region_name = nla_data(info->attrs[DEVLINK_ATTR_REGION_NAME]);
544e7c33ec2f80 Andrew Lunn    2020-10-04  6291  
544e7c33ec2f80 Andrew Lunn    2020-10-04  6292  	if (info->attrs[DEVLINK_ATTR_PORT_INDEX]) {
544e7c33ec2f80 Andrew Lunn    2020-10-04  6293  		index = nla_get_u32(info->attrs[DEVLINK_ATTR_PORT_INDEX]);
544e7c33ec2f80 Andrew Lunn    2020-10-04  6294  
544e7c33ec2f80 Andrew Lunn    2020-10-04  6295  		port = devlink_port_get_by_index(devlink, index);
544e7c33ec2f80 Andrew Lunn    2020-10-04  6296  		if (!port)
544e7c33ec2f80 Andrew Lunn    2020-10-04  6297  			return -ENODEV;
544e7c33ec2f80 Andrew Lunn    2020-10-04  6298  	}
544e7c33ec2f80 Andrew Lunn    2020-10-04  6299  
544e7c33ec2f80 Andrew Lunn    2020-10-04  6300  	if (port)
544e7c33ec2f80 Andrew Lunn    2020-10-04  6301  		region = devlink_port_region_get_by_name(port, region_name);
544e7c33ec2f80 Andrew Lunn    2020-10-04  6302  	else
b9a17abfde842b Jacob Keller   2020-03-26  6303  		region = devlink_region_get_by_name(devlink, region_name);
544e7c33ec2f80 Andrew Lunn    2020-10-04  6304  
b9a17abfde842b Jacob Keller   2020-03-26  6305  	if (!region) {
b9a17abfde842b Jacob Keller   2020-03-26  6306  		NL_SET_ERR_MSG_MOD(info->extack, "The requested region does not exist");
b9a17abfde842b Jacob Keller   2020-03-26  6307  		return -EINVAL;
b9a17abfde842b Jacob Keller   2020-03-26  6308  	}
b9a17abfde842b Jacob Keller   2020-03-26  6309  
b9a17abfde842b Jacob Keller   2020-03-26  6310  	if (!region->ops->snapshot) {
b9a17abfde842b Jacob Keller   2020-03-26  6311  		NL_SET_ERR_MSG_MOD(info->extack, "The requested region does not support taking an immediate snapshot");
b9a17abfde842b Jacob Keller   2020-03-26  6312  		return -EOPNOTSUPP;
b9a17abfde842b Jacob Keller   2020-03-26  6313  	}
b9a17abfde842b Jacob Keller   2020-03-26  6314  
2dec18ad826f52 Jiri Pirko     2022-07-28  6315  	mutex_lock(&region->snapshot_lock);
2dec18ad826f52 Jiri Pirko     2022-07-28  6316  
b9a17abfde842b Jacob Keller   2020-03-26  6317  	if (region->cur_snapshots == region->max_snapshots) {
b9a17abfde842b Jacob Keller   2020-03-26  6318  		NL_SET_ERR_MSG_MOD(info->extack, "The region has reached the maximum number of stored snapshots");
2dec18ad826f52 Jiri Pirko     2022-07-28  6319  		err = -ENOSPC;
2dec18ad826f52 Jiri Pirko     2022-07-28  6320  		goto unlock;
b9a17abfde842b Jacob Keller   2020-03-26  6321  	}
b9a17abfde842b Jacob Keller   2020-03-26  6322  
043b3e22768d5d Jakub Kicinski 2020-05-01  6323  	snapshot_id_attr = info->attrs[DEVLINK_ATTR_REGION_SNAPSHOT_ID];
043b3e22768d5d Jakub Kicinski 2020-05-01  6324  	if (snapshot_id_attr) {
043b3e22768d5d Jakub Kicinski 2020-05-01  6325  		snapshot_id = nla_get_u32(snapshot_id_attr);
b9a17abfde842b Jacob Keller   2020-03-26  6326  
b9a17abfde842b Jacob Keller   2020-03-26  6327  		if (devlink_region_snapshot_get_by_id(region, snapshot_id)) {
b9a17abfde842b Jacob Keller   2020-03-26  6328  			NL_SET_ERR_MSG_MOD(info->extack, "The requested snapshot id is already in use");
2dec18ad826f52 Jiri Pirko     2022-07-28  6329  			err = -EEXIST;
2dec18ad826f52 Jiri Pirko     2022-07-28  6330  			goto unlock;
b9a17abfde842b Jacob Keller   2020-03-26  6331  		}
b9a17abfde842b Jacob Keller   2020-03-26  6332  
b9a17abfde842b Jacob Keller   2020-03-26  6333  		err = __devlink_snapshot_id_insert(devlink, snapshot_id);
b9a17abfde842b Jacob Keller   2020-03-26  6334  		if (err)
2dec18ad826f52 Jiri Pirko     2022-07-28  6335  			goto unlock;
043b3e22768d5d Jakub Kicinski 2020-05-01  6336  	} else {
043b3e22768d5d Jakub Kicinski 2020-05-01  6337  		err = __devlink_region_snapshot_id_get(devlink, &snapshot_id);
043b3e22768d5d Jakub Kicinski 2020-05-01  6338  		if (err) {
043b3e22768d5d Jakub Kicinski 2020-05-01  6339  			NL_SET_ERR_MSG_MOD(info->extack, "Failed to allocate a new snapshot id");
2dec18ad826f52 Jiri Pirko     2022-07-28  6340  			goto unlock;
043b3e22768d5d Jakub Kicinski 2020-05-01  6341  		}
043b3e22768d5d Jakub Kicinski 2020-05-01  6342  	}
b9a17abfde842b Jacob Keller   2020-03-26  6343  
544e7c33ec2f80 Andrew Lunn    2020-10-04  6344  	if (port)
544e7c33ec2f80 Andrew Lunn    2020-10-04  6345  		err = region->port_ops->snapshot(port, region->port_ops,
544e7c33ec2f80 Andrew Lunn    2020-10-04  6346  						 info->extack, &data);
544e7c33ec2f80 Andrew Lunn    2020-10-04  6347  	else
544e7c33ec2f80 Andrew Lunn    2020-10-04  6348  		err = region->ops->snapshot(devlink, region->ops,
544e7c33ec2f80 Andrew Lunn    2020-10-04  6349  					    info->extack, &data);
b9a17abfde842b Jacob Keller   2020-03-26  6350  	if (err)
b9a17abfde842b Jacob Keller   2020-03-26  6351  		goto err_snapshot_capture;
b9a17abfde842b Jacob Keller   2020-03-26  6352  
b9a17abfde842b Jacob Keller   2020-03-26  6353  	err = __devlink_region_snapshot_create(region, data, snapshot_id);
b9a17abfde842b Jacob Keller   2020-03-26  6354  	if (err)
b9a17abfde842b Jacob Keller   2020-03-26  6355  		goto err_snapshot_create;
b9a17abfde842b Jacob Keller   2020-03-26  6356  
043b3e22768d5d Jakub Kicinski 2020-05-01  6357  	if (!snapshot_id_attr) {
043b3e22768d5d Jakub Kicinski 2020-05-01  6358  		struct sk_buff *msg;
043b3e22768d5d Jakub Kicinski 2020-05-01  6359  
043b3e22768d5d Jakub Kicinski 2020-05-01  6360  		snapshot = devlink_region_snapshot_get_by_id(region,
043b3e22768d5d Jakub Kicinski 2020-05-01  6361  							     snapshot_id);
043b3e22768d5d Jakub Kicinski 2020-05-01  6362  		if (WARN_ON(!snapshot))
043b3e22768d5d Jakub Kicinski 2020-05-01  6363  			return -EINVAL;
043b3e22768d5d Jakub Kicinski 2020-05-01  6364  
043b3e22768d5d Jakub Kicinski 2020-05-01  6365  		msg = devlink_nl_region_notify_build(region, snapshot,
043b3e22768d5d Jakub Kicinski 2020-05-01  6366  						     DEVLINK_CMD_REGION_NEW,
043b3e22768d5d Jakub Kicinski 2020-05-01  6367  						     info->snd_portid,
043b3e22768d5d Jakub Kicinski 2020-05-01  6368  						     info->snd_seq);
043b3e22768d5d Jakub Kicinski 2020-05-01  6369  		err = PTR_ERR_OR_ZERO(msg);
043b3e22768d5d Jakub Kicinski 2020-05-01  6370  		if (err)
043b3e22768d5d Jakub Kicinski 2020-05-01  6371  			goto err_notify;
043b3e22768d5d Jakub Kicinski 2020-05-01  6372  
043b3e22768d5d Jakub Kicinski 2020-05-01  6373  		err = genlmsg_reply(msg, info);
043b3e22768d5d Jakub Kicinski 2020-05-01  6374  		if (err)
043b3e22768d5d Jakub Kicinski 2020-05-01  6375  			goto err_notify;
043b3e22768d5d Jakub Kicinski 2020-05-01  6376  	}
043b3e22768d5d Jakub Kicinski 2020-05-01  6377  
2dec18ad826f52 Jiri Pirko     2022-07-28  6378  	mutex_unlock(&region->snapshot_lock);
b9a17abfde842b Jacob Keller   2020-03-26  6379  	return 0;
b9a17abfde842b Jacob Keller   2020-03-26  6380  
b9a17abfde842b Jacob Keller   2020-03-26  6381  err_snapshot_create:
b9a17abfde842b Jacob Keller   2020-03-26  6382  	region->ops->destructor(data);
b9a17abfde842b Jacob Keller   2020-03-26  6383  err_snapshot_capture:
b9a17abfde842b Jacob Keller   2020-03-26  6384  	__devlink_snapshot_id_decrement(devlink, snapshot_id);
2dec18ad826f52 Jiri Pirko     2022-07-28  6385  	mutex_unlock(&region->snapshot_lock);
b9a17abfde842b Jacob Keller   2020-03-26  6386  	return err;
043b3e22768d5d Jakub Kicinski 2020-05-01  6387  
043b3e22768d5d Jakub Kicinski 2020-05-01  6388  err_notify:
043b3e22768d5d Jakub Kicinski 2020-05-01  6389  	devlink_region_snapshot_del(region, snapshot);
2dec18ad826f52 Jiri Pirko     2022-07-28  6390  unlock:
2dec18ad826f52 Jiri Pirko     2022-07-28  6391  	mutex_unlock(&region->snapshot_lock);
043b3e22768d5d Jakub Kicinski 2020-05-01 @6392  	return err;
b9a17abfde842b Jacob Keller   2020-03-26  6393  }
b9a17abfde842b Jacob Keller   2020-03-26  6394  

:::::: The code at line 6392 was first introduced by commit
:::::: 043b3e22768d5d909cb1474fc21ae2fbaf026c0c devlink: let kernel allocate region snapshot id

:::::: TO: Jakub Kicinski <kuba@kernel.org>
:::::: CC: David S. Miller <davem@davemloft.net>

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

WARNING: multiple messages have this Message-ID (diff)
From: Dan Carpenter <dan.carpenter@oracle.com>
To: kbuild-all@lists.01.org
Subject: [ammarfaizi2-block:netdev/net-next/main 20/29] net/core/devlink.c:6392 devlink_nl_cmd_region_new() warn: inconsistent returns '&region->snapshot_lock'.
Date: Mon, 01 Aug 2022 14:29:56 +0300	[thread overview]
Message-ID: <202207311503.QBFSGqiL-lkp@intel.com> (raw)

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

tree:   https://github.com/ammarfaizi2/linux-block netdev/net-next/main
head:   63757225a93353bc2ce4499af5501eabdbbf23f9
commit: 2dec18ad826f52658f7781ee995d236cc449b678 [20/29] net: devlink: remove region snapshots list dependency on devlink->lock
config: arc-randconfig-m041-20220731 (https://download.01.org/0day-ci/archive/20220731/202207311503.QBFSGqiL-lkp(a)intel.com/config)
compiler: arceb-elf-gcc (GCC) 12.1.0

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

New smatch warnings:
net/core/devlink.c:6392 devlink_nl_cmd_region_new() warn: inconsistent returns '&region->snapshot_lock'.

Old smatch warnings:
net/core/devlink.c:7284 devlink_fmsg_prepare_skb() error: uninitialized symbol 'err'.
arch/arc/include/asm/thread_info.h:62 current_thread_info() error: uninitialized symbol 'sp'.

vim +6392 net/core/devlink.c

b9a17abfde842b Jacob Keller   2020-03-26  6271  static int
b9a17abfde842b Jacob Keller   2020-03-26  6272  devlink_nl_cmd_region_new(struct sk_buff *skb, struct genl_info *info)
b9a17abfde842b Jacob Keller   2020-03-26  6273  {
b9a17abfde842b Jacob Keller   2020-03-26  6274  	struct devlink *devlink = info->user_ptr[0];
043b3e22768d5d Jakub Kicinski 2020-05-01  6275  	struct devlink_snapshot *snapshot;
544e7c33ec2f80 Andrew Lunn    2020-10-04  6276  	struct devlink_port *port = NULL;
043b3e22768d5d Jakub Kicinski 2020-05-01  6277  	struct nlattr *snapshot_id_attr;
b9a17abfde842b Jacob Keller   2020-03-26  6278  	struct devlink_region *region;
b9a17abfde842b Jacob Keller   2020-03-26  6279  	const char *region_name;
544e7c33ec2f80 Andrew Lunn    2020-10-04  6280  	unsigned int index;
b9a17abfde842b Jacob Keller   2020-03-26  6281  	u32 snapshot_id;
b9a17abfde842b Jacob Keller   2020-03-26  6282  	u8 *data;
b9a17abfde842b Jacob Keller   2020-03-26  6283  	int err;
b9a17abfde842b Jacob Keller   2020-03-26  6284  
b9a17abfde842b Jacob Keller   2020-03-26  6285  	if (!info->attrs[DEVLINK_ATTR_REGION_NAME]) {
b9a17abfde842b Jacob Keller   2020-03-26  6286  		NL_SET_ERR_MSG_MOD(info->extack, "No region name provided");
b9a17abfde842b Jacob Keller   2020-03-26  6287  		return -EINVAL;
b9a17abfde842b Jacob Keller   2020-03-26  6288  	}
b9a17abfde842b Jacob Keller   2020-03-26  6289  
b9a17abfde842b Jacob Keller   2020-03-26  6290  	region_name = nla_data(info->attrs[DEVLINK_ATTR_REGION_NAME]);
544e7c33ec2f80 Andrew Lunn    2020-10-04  6291  
544e7c33ec2f80 Andrew Lunn    2020-10-04  6292  	if (info->attrs[DEVLINK_ATTR_PORT_INDEX]) {
544e7c33ec2f80 Andrew Lunn    2020-10-04  6293  		index = nla_get_u32(info->attrs[DEVLINK_ATTR_PORT_INDEX]);
544e7c33ec2f80 Andrew Lunn    2020-10-04  6294  
544e7c33ec2f80 Andrew Lunn    2020-10-04  6295  		port = devlink_port_get_by_index(devlink, index);
544e7c33ec2f80 Andrew Lunn    2020-10-04  6296  		if (!port)
544e7c33ec2f80 Andrew Lunn    2020-10-04  6297  			return -ENODEV;
544e7c33ec2f80 Andrew Lunn    2020-10-04  6298  	}
544e7c33ec2f80 Andrew Lunn    2020-10-04  6299  
544e7c33ec2f80 Andrew Lunn    2020-10-04  6300  	if (port)
544e7c33ec2f80 Andrew Lunn    2020-10-04  6301  		region = devlink_port_region_get_by_name(port, region_name);
544e7c33ec2f80 Andrew Lunn    2020-10-04  6302  	else
b9a17abfde842b Jacob Keller   2020-03-26  6303  		region = devlink_region_get_by_name(devlink, region_name);
544e7c33ec2f80 Andrew Lunn    2020-10-04  6304  
b9a17abfde842b Jacob Keller   2020-03-26  6305  	if (!region) {
b9a17abfde842b Jacob Keller   2020-03-26  6306  		NL_SET_ERR_MSG_MOD(info->extack, "The requested region does not exist");
b9a17abfde842b Jacob Keller   2020-03-26  6307  		return -EINVAL;
b9a17abfde842b Jacob Keller   2020-03-26  6308  	}
b9a17abfde842b Jacob Keller   2020-03-26  6309  
b9a17abfde842b Jacob Keller   2020-03-26  6310  	if (!region->ops->snapshot) {
b9a17abfde842b Jacob Keller   2020-03-26  6311  		NL_SET_ERR_MSG_MOD(info->extack, "The requested region does not support taking an immediate snapshot");
b9a17abfde842b Jacob Keller   2020-03-26  6312  		return -EOPNOTSUPP;
b9a17abfde842b Jacob Keller   2020-03-26  6313  	}
b9a17abfde842b Jacob Keller   2020-03-26  6314  
2dec18ad826f52 Jiri Pirko     2022-07-28  6315  	mutex_lock(&region->snapshot_lock);

New locking

2dec18ad826f52 Jiri Pirko     2022-07-28  6316  
b9a17abfde842b Jacob Keller   2020-03-26  6317  	if (region->cur_snapshots == region->max_snapshots) {
b9a17abfde842b Jacob Keller   2020-03-26  6318  		NL_SET_ERR_MSG_MOD(info->extack, "The region has reached the maximum number of stored snapshots");
2dec18ad826f52 Jiri Pirko     2022-07-28  6319  		err = -ENOSPC;
2dec18ad826f52 Jiri Pirko     2022-07-28  6320  		goto unlock;
b9a17abfde842b Jacob Keller   2020-03-26  6321  	}
b9a17abfde842b Jacob Keller   2020-03-26  6322  
043b3e22768d5d Jakub Kicinski 2020-05-01  6323  	snapshot_id_attr = info->attrs[DEVLINK_ATTR_REGION_SNAPSHOT_ID];
043b3e22768d5d Jakub Kicinski 2020-05-01  6324  	if (snapshot_id_attr) {
043b3e22768d5d Jakub Kicinski 2020-05-01  6325  		snapshot_id = nla_get_u32(snapshot_id_attr);
b9a17abfde842b Jacob Keller   2020-03-26  6326  
b9a17abfde842b Jacob Keller   2020-03-26  6327  		if (devlink_region_snapshot_get_by_id(region, snapshot_id)) {
b9a17abfde842b Jacob Keller   2020-03-26  6328  			NL_SET_ERR_MSG_MOD(info->extack, "The requested snapshot id is already in use");
2dec18ad826f52 Jiri Pirko     2022-07-28  6329  			err = -EEXIST;
2dec18ad826f52 Jiri Pirko     2022-07-28  6330  			goto unlock;
b9a17abfde842b Jacob Keller   2020-03-26  6331  		}
b9a17abfde842b Jacob Keller   2020-03-26  6332  
b9a17abfde842b Jacob Keller   2020-03-26  6333  		err = __devlink_snapshot_id_insert(devlink, snapshot_id);
b9a17abfde842b Jacob Keller   2020-03-26  6334  		if (err)
2dec18ad826f52 Jiri Pirko     2022-07-28  6335  			goto unlock;
043b3e22768d5d Jakub Kicinski 2020-05-01  6336  	} else {
043b3e22768d5d Jakub Kicinski 2020-05-01  6337  		err = __devlink_region_snapshot_id_get(devlink, &snapshot_id);
043b3e22768d5d Jakub Kicinski 2020-05-01  6338  		if (err) {
043b3e22768d5d Jakub Kicinski 2020-05-01  6339  			NL_SET_ERR_MSG_MOD(info->extack, "Failed to allocate a new snapshot id");
2dec18ad826f52 Jiri Pirko     2022-07-28  6340  			goto unlock;
043b3e22768d5d Jakub Kicinski 2020-05-01  6341  		}
043b3e22768d5d Jakub Kicinski 2020-05-01  6342  	}
b9a17abfde842b Jacob Keller   2020-03-26  6343  
544e7c33ec2f80 Andrew Lunn    2020-10-04  6344  	if (port)
544e7c33ec2f80 Andrew Lunn    2020-10-04  6345  		err = region->port_ops->snapshot(port, region->port_ops,
544e7c33ec2f80 Andrew Lunn    2020-10-04  6346  						 info->extack, &data);
544e7c33ec2f80 Andrew Lunn    2020-10-04  6347  	else
544e7c33ec2f80 Andrew Lunn    2020-10-04  6348  		err = region->ops->snapshot(devlink, region->ops,
544e7c33ec2f80 Andrew Lunn    2020-10-04  6349  					    info->extack, &data);
b9a17abfde842b Jacob Keller   2020-03-26  6350  	if (err)
b9a17abfde842b Jacob Keller   2020-03-26  6351  		goto err_snapshot_capture;
b9a17abfde842b Jacob Keller   2020-03-26  6352  
b9a17abfde842b Jacob Keller   2020-03-26  6353  	err = __devlink_region_snapshot_create(region, data, snapshot_id);
b9a17abfde842b Jacob Keller   2020-03-26  6354  	if (err)
b9a17abfde842b Jacob Keller   2020-03-26  6355  		goto err_snapshot_create;
b9a17abfde842b Jacob Keller   2020-03-26  6356  
043b3e22768d5d Jakub Kicinski 2020-05-01  6357  	if (!snapshot_id_attr) {
043b3e22768d5d Jakub Kicinski 2020-05-01  6358  		struct sk_buff *msg;
043b3e22768d5d Jakub Kicinski 2020-05-01  6359  
043b3e22768d5d Jakub Kicinski 2020-05-01  6360  		snapshot = devlink_region_snapshot_get_by_id(region,
043b3e22768d5d Jakub Kicinski 2020-05-01  6361  							     snapshot_id);
043b3e22768d5d Jakub Kicinski 2020-05-01  6362  		if (WARN_ON(!snapshot))
043b3e22768d5d Jakub Kicinski 2020-05-01  6363  			return -EINVAL;

unlock before returning?

043b3e22768d5d Jakub Kicinski 2020-05-01  6364  
043b3e22768d5d Jakub Kicinski 2020-05-01  6365  		msg = devlink_nl_region_notify_build(region, snapshot,
043b3e22768d5d Jakub Kicinski 2020-05-01  6366  						     DEVLINK_CMD_REGION_NEW,
043b3e22768d5d Jakub Kicinski 2020-05-01  6367  						     info->snd_portid,
043b3e22768d5d Jakub Kicinski 2020-05-01  6368  						     info->snd_seq);
043b3e22768d5d Jakub Kicinski 2020-05-01  6369  		err = PTR_ERR_OR_ZERO(msg);
043b3e22768d5d Jakub Kicinski 2020-05-01  6370  		if (err)
043b3e22768d5d Jakub Kicinski 2020-05-01  6371  			goto err_notify;
043b3e22768d5d Jakub Kicinski 2020-05-01  6372  
043b3e22768d5d Jakub Kicinski 2020-05-01  6373  		err = genlmsg_reply(msg, info);
043b3e22768d5d Jakub Kicinski 2020-05-01  6374  		if (err)
043b3e22768d5d Jakub Kicinski 2020-05-01  6375  			goto err_notify;
043b3e22768d5d Jakub Kicinski 2020-05-01  6376  	}
043b3e22768d5d Jakub Kicinski 2020-05-01  6377  
2dec18ad826f52 Jiri Pirko     2022-07-28  6378  	mutex_unlock(&region->snapshot_lock);
b9a17abfde842b Jacob Keller   2020-03-26  6379  	return 0;
b9a17abfde842b Jacob Keller   2020-03-26  6380  
b9a17abfde842b Jacob Keller   2020-03-26  6381  err_snapshot_create:
b9a17abfde842b Jacob Keller   2020-03-26  6382  	region->ops->destructor(data);
b9a17abfde842b Jacob Keller   2020-03-26  6383  err_snapshot_capture:
b9a17abfde842b Jacob Keller   2020-03-26  6384  	__devlink_snapshot_id_decrement(devlink, snapshot_id);
2dec18ad826f52 Jiri Pirko     2022-07-28  6385  	mutex_unlock(&region->snapshot_lock);
b9a17abfde842b Jacob Keller   2020-03-26  6386  	return err;
043b3e22768d5d Jakub Kicinski 2020-05-01  6387  
043b3e22768d5d Jakub Kicinski 2020-05-01  6388  err_notify:
043b3e22768d5d Jakub Kicinski 2020-05-01  6389  	devlink_region_snapshot_del(region, snapshot);
2dec18ad826f52 Jiri Pirko     2022-07-28  6390  unlock:
2dec18ad826f52 Jiri Pirko     2022-07-28  6391  	mutex_unlock(&region->snapshot_lock);
043b3e22768d5d Jakub Kicinski 2020-05-01 @6392  	return err;
b9a17abfde842b Jacob Keller   2020-03-26  6393  }

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

WARNING: multiple messages have this Message-ID (diff)
From: Dan Carpenter <dan.carpenter@oracle.com>
To: kbuild@lists.01.org, Jiri Pirko <jiri@nvidia.com>
Cc: lkp@intel.com, kbuild-all@lists.01.org,
	Ammar Faizi <ammarfaizi2@gnuweeb.org>,
	GNU/Weeb Mailing List <gwml@vger.gnuweeb.org>,
	linux-kernel@vger.kernel.org
Subject: [ammarfaizi2-block:netdev/net-next/main 20/29] net/core/devlink.c:6392 devlink_nl_cmd_region_new() warn: inconsistent returns '&region->snapshot_lock'.
Date: Mon, 1 Aug 2022 14:29:56 +0300	[thread overview]
Message-ID: <202207311503.QBFSGqiL-lkp@intel.com> (raw)

tree:   https://github.com/ammarfaizi2/linux-block netdev/net-next/main
head:   63757225a93353bc2ce4499af5501eabdbbf23f9
commit: 2dec18ad826f52658f7781ee995d236cc449b678 [20/29] net: devlink: remove region snapshots list dependency on devlink->lock
config: arc-randconfig-m041-20220731 (https://download.01.org/0day-ci/archive/20220731/202207311503.QBFSGqiL-lkp@intel.com/config)
compiler: arceb-elf-gcc (GCC) 12.1.0

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

New smatch warnings:
net/core/devlink.c:6392 devlink_nl_cmd_region_new() warn: inconsistent returns '&region->snapshot_lock'.

Old smatch warnings:
net/core/devlink.c:7284 devlink_fmsg_prepare_skb() error: uninitialized symbol 'err'.
arch/arc/include/asm/thread_info.h:62 current_thread_info() error: uninitialized symbol 'sp'.

vim +6392 net/core/devlink.c

b9a17abfde842b Jacob Keller   2020-03-26  6271  static int
b9a17abfde842b Jacob Keller   2020-03-26  6272  devlink_nl_cmd_region_new(struct sk_buff *skb, struct genl_info *info)
b9a17abfde842b Jacob Keller   2020-03-26  6273  {
b9a17abfde842b Jacob Keller   2020-03-26  6274  	struct devlink *devlink = info->user_ptr[0];
043b3e22768d5d Jakub Kicinski 2020-05-01  6275  	struct devlink_snapshot *snapshot;
544e7c33ec2f80 Andrew Lunn    2020-10-04  6276  	struct devlink_port *port = NULL;
043b3e22768d5d Jakub Kicinski 2020-05-01  6277  	struct nlattr *snapshot_id_attr;
b9a17abfde842b Jacob Keller   2020-03-26  6278  	struct devlink_region *region;
b9a17abfde842b Jacob Keller   2020-03-26  6279  	const char *region_name;
544e7c33ec2f80 Andrew Lunn    2020-10-04  6280  	unsigned int index;
b9a17abfde842b Jacob Keller   2020-03-26  6281  	u32 snapshot_id;
b9a17abfde842b Jacob Keller   2020-03-26  6282  	u8 *data;
b9a17abfde842b Jacob Keller   2020-03-26  6283  	int err;
b9a17abfde842b Jacob Keller   2020-03-26  6284  
b9a17abfde842b Jacob Keller   2020-03-26  6285  	if (!info->attrs[DEVLINK_ATTR_REGION_NAME]) {
b9a17abfde842b Jacob Keller   2020-03-26  6286  		NL_SET_ERR_MSG_MOD(info->extack, "No region name provided");
b9a17abfde842b Jacob Keller   2020-03-26  6287  		return -EINVAL;
b9a17abfde842b Jacob Keller   2020-03-26  6288  	}
b9a17abfde842b Jacob Keller   2020-03-26  6289  
b9a17abfde842b Jacob Keller   2020-03-26  6290  	region_name = nla_data(info->attrs[DEVLINK_ATTR_REGION_NAME]);
544e7c33ec2f80 Andrew Lunn    2020-10-04  6291  
544e7c33ec2f80 Andrew Lunn    2020-10-04  6292  	if (info->attrs[DEVLINK_ATTR_PORT_INDEX]) {
544e7c33ec2f80 Andrew Lunn    2020-10-04  6293  		index = nla_get_u32(info->attrs[DEVLINK_ATTR_PORT_INDEX]);
544e7c33ec2f80 Andrew Lunn    2020-10-04  6294  
544e7c33ec2f80 Andrew Lunn    2020-10-04  6295  		port = devlink_port_get_by_index(devlink, index);
544e7c33ec2f80 Andrew Lunn    2020-10-04  6296  		if (!port)
544e7c33ec2f80 Andrew Lunn    2020-10-04  6297  			return -ENODEV;
544e7c33ec2f80 Andrew Lunn    2020-10-04  6298  	}
544e7c33ec2f80 Andrew Lunn    2020-10-04  6299  
544e7c33ec2f80 Andrew Lunn    2020-10-04  6300  	if (port)
544e7c33ec2f80 Andrew Lunn    2020-10-04  6301  		region = devlink_port_region_get_by_name(port, region_name);
544e7c33ec2f80 Andrew Lunn    2020-10-04  6302  	else
b9a17abfde842b Jacob Keller   2020-03-26  6303  		region = devlink_region_get_by_name(devlink, region_name);
544e7c33ec2f80 Andrew Lunn    2020-10-04  6304  
b9a17abfde842b Jacob Keller   2020-03-26  6305  	if (!region) {
b9a17abfde842b Jacob Keller   2020-03-26  6306  		NL_SET_ERR_MSG_MOD(info->extack, "The requested region does not exist");
b9a17abfde842b Jacob Keller   2020-03-26  6307  		return -EINVAL;
b9a17abfde842b Jacob Keller   2020-03-26  6308  	}
b9a17abfde842b Jacob Keller   2020-03-26  6309  
b9a17abfde842b Jacob Keller   2020-03-26  6310  	if (!region->ops->snapshot) {
b9a17abfde842b Jacob Keller   2020-03-26  6311  		NL_SET_ERR_MSG_MOD(info->extack, "The requested region does not support taking an immediate snapshot");
b9a17abfde842b Jacob Keller   2020-03-26  6312  		return -EOPNOTSUPP;
b9a17abfde842b Jacob Keller   2020-03-26  6313  	}
b9a17abfde842b Jacob Keller   2020-03-26  6314  
2dec18ad826f52 Jiri Pirko     2022-07-28  6315  	mutex_lock(&region->snapshot_lock);

New locking

2dec18ad826f52 Jiri Pirko     2022-07-28  6316  
b9a17abfde842b Jacob Keller   2020-03-26  6317  	if (region->cur_snapshots == region->max_snapshots) {
b9a17abfde842b Jacob Keller   2020-03-26  6318  		NL_SET_ERR_MSG_MOD(info->extack, "The region has reached the maximum number of stored snapshots");
2dec18ad826f52 Jiri Pirko     2022-07-28  6319  		err = -ENOSPC;
2dec18ad826f52 Jiri Pirko     2022-07-28  6320  		goto unlock;
b9a17abfde842b Jacob Keller   2020-03-26  6321  	}
b9a17abfde842b Jacob Keller   2020-03-26  6322  
043b3e22768d5d Jakub Kicinski 2020-05-01  6323  	snapshot_id_attr = info->attrs[DEVLINK_ATTR_REGION_SNAPSHOT_ID];
043b3e22768d5d Jakub Kicinski 2020-05-01  6324  	if (snapshot_id_attr) {
043b3e22768d5d Jakub Kicinski 2020-05-01  6325  		snapshot_id = nla_get_u32(snapshot_id_attr);
b9a17abfde842b Jacob Keller   2020-03-26  6326  
b9a17abfde842b Jacob Keller   2020-03-26  6327  		if (devlink_region_snapshot_get_by_id(region, snapshot_id)) {
b9a17abfde842b Jacob Keller   2020-03-26  6328  			NL_SET_ERR_MSG_MOD(info->extack, "The requested snapshot id is already in use");
2dec18ad826f52 Jiri Pirko     2022-07-28  6329  			err = -EEXIST;
2dec18ad826f52 Jiri Pirko     2022-07-28  6330  			goto unlock;
b9a17abfde842b Jacob Keller   2020-03-26  6331  		}
b9a17abfde842b Jacob Keller   2020-03-26  6332  
b9a17abfde842b Jacob Keller   2020-03-26  6333  		err = __devlink_snapshot_id_insert(devlink, snapshot_id);
b9a17abfde842b Jacob Keller   2020-03-26  6334  		if (err)
2dec18ad826f52 Jiri Pirko     2022-07-28  6335  			goto unlock;
043b3e22768d5d Jakub Kicinski 2020-05-01  6336  	} else {
043b3e22768d5d Jakub Kicinski 2020-05-01  6337  		err = __devlink_region_snapshot_id_get(devlink, &snapshot_id);
043b3e22768d5d Jakub Kicinski 2020-05-01  6338  		if (err) {
043b3e22768d5d Jakub Kicinski 2020-05-01  6339  			NL_SET_ERR_MSG_MOD(info->extack, "Failed to allocate a new snapshot id");
2dec18ad826f52 Jiri Pirko     2022-07-28  6340  			goto unlock;
043b3e22768d5d Jakub Kicinski 2020-05-01  6341  		}
043b3e22768d5d Jakub Kicinski 2020-05-01  6342  	}
b9a17abfde842b Jacob Keller   2020-03-26  6343  
544e7c33ec2f80 Andrew Lunn    2020-10-04  6344  	if (port)
544e7c33ec2f80 Andrew Lunn    2020-10-04  6345  		err = region->port_ops->snapshot(port, region->port_ops,
544e7c33ec2f80 Andrew Lunn    2020-10-04  6346  						 info->extack, &data);
544e7c33ec2f80 Andrew Lunn    2020-10-04  6347  	else
544e7c33ec2f80 Andrew Lunn    2020-10-04  6348  		err = region->ops->snapshot(devlink, region->ops,
544e7c33ec2f80 Andrew Lunn    2020-10-04  6349  					    info->extack, &data);
b9a17abfde842b Jacob Keller   2020-03-26  6350  	if (err)
b9a17abfde842b Jacob Keller   2020-03-26  6351  		goto err_snapshot_capture;
b9a17abfde842b Jacob Keller   2020-03-26  6352  
b9a17abfde842b Jacob Keller   2020-03-26  6353  	err = __devlink_region_snapshot_create(region, data, snapshot_id);
b9a17abfde842b Jacob Keller   2020-03-26  6354  	if (err)
b9a17abfde842b Jacob Keller   2020-03-26  6355  		goto err_snapshot_create;
b9a17abfde842b Jacob Keller   2020-03-26  6356  
043b3e22768d5d Jakub Kicinski 2020-05-01  6357  	if (!snapshot_id_attr) {
043b3e22768d5d Jakub Kicinski 2020-05-01  6358  		struct sk_buff *msg;
043b3e22768d5d Jakub Kicinski 2020-05-01  6359  
043b3e22768d5d Jakub Kicinski 2020-05-01  6360  		snapshot = devlink_region_snapshot_get_by_id(region,
043b3e22768d5d Jakub Kicinski 2020-05-01  6361  							     snapshot_id);
043b3e22768d5d Jakub Kicinski 2020-05-01  6362  		if (WARN_ON(!snapshot))
043b3e22768d5d Jakub Kicinski 2020-05-01  6363  			return -EINVAL;

unlock before returning?

043b3e22768d5d Jakub Kicinski 2020-05-01  6364  
043b3e22768d5d Jakub Kicinski 2020-05-01  6365  		msg = devlink_nl_region_notify_build(region, snapshot,
043b3e22768d5d Jakub Kicinski 2020-05-01  6366  						     DEVLINK_CMD_REGION_NEW,
043b3e22768d5d Jakub Kicinski 2020-05-01  6367  						     info->snd_portid,
043b3e22768d5d Jakub Kicinski 2020-05-01  6368  						     info->snd_seq);
043b3e22768d5d Jakub Kicinski 2020-05-01  6369  		err = PTR_ERR_OR_ZERO(msg);
043b3e22768d5d Jakub Kicinski 2020-05-01  6370  		if (err)
043b3e22768d5d Jakub Kicinski 2020-05-01  6371  			goto err_notify;
043b3e22768d5d Jakub Kicinski 2020-05-01  6372  
043b3e22768d5d Jakub Kicinski 2020-05-01  6373  		err = genlmsg_reply(msg, info);
043b3e22768d5d Jakub Kicinski 2020-05-01  6374  		if (err)
043b3e22768d5d Jakub Kicinski 2020-05-01  6375  			goto err_notify;
043b3e22768d5d Jakub Kicinski 2020-05-01  6376  	}
043b3e22768d5d Jakub Kicinski 2020-05-01  6377  
2dec18ad826f52 Jiri Pirko     2022-07-28  6378  	mutex_unlock(&region->snapshot_lock);
b9a17abfde842b Jacob Keller   2020-03-26  6379  	return 0;
b9a17abfde842b Jacob Keller   2020-03-26  6380  
b9a17abfde842b Jacob Keller   2020-03-26  6381  err_snapshot_create:
b9a17abfde842b Jacob Keller   2020-03-26  6382  	region->ops->destructor(data);
b9a17abfde842b Jacob Keller   2020-03-26  6383  err_snapshot_capture:
b9a17abfde842b Jacob Keller   2020-03-26  6384  	__devlink_snapshot_id_decrement(devlink, snapshot_id);
2dec18ad826f52 Jiri Pirko     2022-07-28  6385  	mutex_unlock(&region->snapshot_lock);
b9a17abfde842b Jacob Keller   2020-03-26  6386  	return err;
043b3e22768d5d Jakub Kicinski 2020-05-01  6387  
043b3e22768d5d Jakub Kicinski 2020-05-01  6388  err_notify:
043b3e22768d5d Jakub Kicinski 2020-05-01  6389  	devlink_region_snapshot_del(region, snapshot);
2dec18ad826f52 Jiri Pirko     2022-07-28  6390  unlock:
2dec18ad826f52 Jiri Pirko     2022-07-28  6391  	mutex_unlock(&region->snapshot_lock);
043b3e22768d5d Jakub Kicinski 2020-05-01 @6392  	return err;
b9a17abfde842b Jacob Keller   2020-03-26  6393  }

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp


             reply	other threads:[~2022-07-31  8:01 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-31  8:01 kernel test robot [this message]
2022-08-01 11:29 ` [ammarfaizi2-block:netdev/net-next/main 20/29] net/core/devlink.c:6392 devlink_nl_cmd_region_new() warn: inconsistent returns '&region->snapshot_lock' Dan Carpenter
2022-08-01 11:29 ` Dan Carpenter
2022-08-01 11:59 ` [PATCH] net: devlink: Fix missing mutex_unlock() call Ammar Faizi
2022-08-01 11:59   ` Ammar Faizi
2022-08-01 14:40   ` Jiri Pirko
2022-08-01 14:40     ` Jiri Pirko
2022-08-01 19:50   ` patchwork-bot+netdevbpf
2022-08-01 19:50   ` patchwork-bot+netdevbpf

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=202207311503.QBFSGqiL-lkp@intel.com \
    --to=lkp@intel.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.