public inbox for linux-rdma@vger.kernel.org
 help / color / mirror / Atom feed
* Re: [PATCH v3 2/2] IB/mad: Use ID allocator routines to allocate agent number (fwd)
@ 2018-06-16 16:04 Julia Lawall
  2018-06-17  6:35 ` jackm
  0 siblings, 1 reply; 3+ messages in thread
From: Julia Lawall @ 2018-06-16 16:04 UTC (permalink / raw)
  To: Hans Westgaard Ry
  Cc: Doug Ledford, Jason Gunthorpe, Hakon Bugge, Parav Pandit,
	Jack Morgenstein, Pravin Shedge, Matthew Wilcox, Andrew Morton,
	Jeff Layton, Wei Wang, Chris Mi, Eric Biggers, Rasmus Villemoes,
	Mel Gorman, linux-rdma, linux-kernel, kbuild-all

ib_mad_client_id is declared as u32, so it will not be < 0 (line 382).

julia

---------- Forwarded message ----------
Date: Fri, 8 Jun 2018 08:49:57 +0800
From: kbuild test robot <lkp@intel.com>
To: kbuild@01.org
Cc: Julia Lawall <julia.lawall@lip6.fr>
Subject: Re: [PATCH v3 2/2] IB/mad: Use ID allocator routines to allocate agent
    number

Hi Hans,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on linus/master]
[also build test WARNING on v4.17]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Hans-Westgaard-Ry/IB-mad-Use-ID-allocator-routines-to-allocate-agent-number/20180608-022348
:::::: branch date: 6 hours ago
:::::: commit date: 6 hours ago

>> drivers/infiniband/core/mad.c:382:5-21: WARNING: Unsigned expression compared with zero: ib_mad_client_id < 0

# https://github.com/0day-ci/linux/commit/74b1ba09003c9d132878734bf44f32a62bad31db
git remote add linux-review https://github.com/0day-ci/linux
git remote update linux-review
git checkout 74b1ba09003c9d132878734bf44f32a62bad31db
vim +382 drivers/infiniband/core/mad.c

2527e681 Sean Hefty        2006-07-20  190
^1da177e Linus Torvalds    2005-04-16  191  /*
^1da177e Linus Torvalds    2005-04-16  192   * ib_register_mad_agent - Register to send/receive MADs
^1da177e Linus Torvalds    2005-04-16  193   */
^1da177e Linus Torvalds    2005-04-16  194  struct ib_mad_agent *ib_register_mad_agent(struct ib_device *device,
^1da177e Linus Torvalds    2005-04-16  195  					   u8 port_num,
^1da177e Linus Torvalds    2005-04-16  196  					   enum ib_qp_type qp_type,
^1da177e Linus Torvalds    2005-04-16  197  					   struct ib_mad_reg_req *mad_reg_req,
^1da177e Linus Torvalds    2005-04-16  198  					   u8 rmpp_version,
^1da177e Linus Torvalds    2005-04-16  199  					   ib_mad_send_handler send_handler,
^1da177e Linus Torvalds    2005-04-16  200  					   ib_mad_recv_handler recv_handler,
0f29b46d Ira Weiny         2014-08-08  201  					   void *context,
0f29b46d Ira Weiny         2014-08-08  202  					   u32 registration_flags)
^1da177e Linus Torvalds    2005-04-16  203  {
^1da177e Linus Torvalds    2005-04-16  204  	struct ib_mad_port_private *port_priv;
^1da177e Linus Torvalds    2005-04-16  205  	struct ib_mad_agent *ret = ERR_PTR(-EINVAL);
^1da177e Linus Torvalds    2005-04-16  206  	struct ib_mad_agent_private *mad_agent_priv;
^1da177e Linus Torvalds    2005-04-16  207  	struct ib_mad_reg_req *reg_req = NULL;
^1da177e Linus Torvalds    2005-04-16  208  	struct ib_mad_mgmt_class_table *class;
^1da177e Linus Torvalds    2005-04-16  209  	struct ib_mad_mgmt_vendor_class_table *vendor;
^1da177e Linus Torvalds    2005-04-16  210  	struct ib_mad_mgmt_vendor_class *vendor_class;
^1da177e Linus Torvalds    2005-04-16  211  	struct ib_mad_mgmt_method_table *method;
^1da177e Linus Torvalds    2005-04-16  212  	int ret2, qpn;
^1da177e Linus Torvalds    2005-04-16  213  	unsigned long flags;
^1da177e Linus Torvalds    2005-04-16  214  	u8 mgmt_class, vclass;
74b1ba09 Hans Westgaard Ry 2018-06-07  215  	u32 ib_mad_client_id;
^1da177e Linus Torvalds    2005-04-16  216  	/* Validate parameters */
^1da177e Linus Torvalds    2005-04-16  217  	qpn = get_spl_qp_index(qp_type);
9ad13a42 Ira Weiny         2014-08-08  218  	if (qpn == -1) {
9ad13a42 Ira Weiny         2014-08-08  219  		dev_notice(&device->dev,
9ad13a42 Ira Weiny         2014-08-08  220  			   "ib_register_mad_agent: invalid QP Type %d\n",
9ad13a42 Ira Weiny         2014-08-08  221  			   qp_type);
^1da177e Linus Torvalds    2005-04-16  222  		goto error1;
9ad13a42 Ira Weiny         2014-08-08  223  	}
^1da177e Linus Torvalds    2005-04-16  224
9ad13a42 Ira Weiny         2014-08-08  225  	if (rmpp_version && rmpp_version != IB_MGMT_RMPP_VERSION) {
9ad13a42 Ira Weiny         2014-08-08  226  		dev_notice(&device->dev,
9ad13a42 Ira Weiny         2014-08-08  227  			   "ib_register_mad_agent: invalid RMPP Version %u\n",
9ad13a42 Ira Weiny         2014-08-08  228  			   rmpp_version);
fa619a77 Hal Rosenstock    2005-07-27  229  		goto error1;
9ad13a42 Ira Weiny         2014-08-08  230  	}
^1da177e Linus Torvalds    2005-04-16  231
^1da177e Linus Torvalds    2005-04-16  232  	/* Validate MAD registration request if supplied */
^1da177e Linus Torvalds    2005-04-16  233  	if (mad_reg_req) {
9ad13a42 Ira Weiny         2014-08-08  234  		if (mad_reg_req->mgmt_class_version >= MAX_MGMT_VERSION) {
9ad13a42 Ira Weiny         2014-08-08  235  			dev_notice(&device->dev,
9ad13a42 Ira Weiny         2014-08-08  236  				   "ib_register_mad_agent: invalid Class Version %u\n",
9ad13a42 Ira Weiny         2014-08-08  237  				   mad_reg_req->mgmt_class_version);
^1da177e Linus Torvalds    2005-04-16  238  			goto error1;
9ad13a42 Ira Weiny         2014-08-08  239  		}
9ad13a42 Ira Weiny         2014-08-08  240  		if (!recv_handler) {
9ad13a42 Ira Weiny         2014-08-08  241  			dev_notice(&device->dev,
9ad13a42 Ira Weiny         2014-08-08  242  				   "ib_register_mad_agent: no recv_handler\n");
^1da177e Linus Torvalds    2005-04-16  243  			goto error1;
9ad13a42 Ira Weiny         2014-08-08  244  		}
^1da177e Linus Torvalds    2005-04-16  245  		if (mad_reg_req->mgmt_class >= MAX_MGMT_CLASS) {
^1da177e Linus Torvalds    2005-04-16  246  			/*
^1da177e Linus Torvalds    2005-04-16  247  			 * IB_MGMT_CLASS_SUBN_DIRECTED_ROUTE is the only
^1da177e Linus Torvalds    2005-04-16  248  			 * one in this range currently allowed
^1da177e Linus Torvalds    2005-04-16  249  			 */
^1da177e Linus Torvalds    2005-04-16  250  			if (mad_reg_req->mgmt_class !=
9ad13a42 Ira Weiny         2014-08-08  251  			    IB_MGMT_CLASS_SUBN_DIRECTED_ROUTE) {
9ad13a42 Ira Weiny         2014-08-08  252  				dev_notice(&device->dev,
9ad13a42 Ira Weiny         2014-08-08  253  					   "ib_register_mad_agent: Invalid Mgmt Class 0x%x\n",
9ad13a42 Ira Weiny         2014-08-08  254  					   mad_reg_req->mgmt_class);
^1da177e Linus Torvalds    2005-04-16  255  				goto error1;
9ad13a42 Ira Weiny         2014-08-08  256  			}
^1da177e Linus Torvalds    2005-04-16  257  		} else if (mad_reg_req->mgmt_class == 0) {
^1da177e Linus Torvalds    2005-04-16  258  			/*
^1da177e Linus Torvalds    2005-04-16  259  			 * Class 0 is reserved in IBA and is used for
^1da177e Linus Torvalds    2005-04-16  260  			 * aliasing of IB_MGMT_CLASS_SUBN_DIRECTED_ROUTE
^1da177e Linus Torvalds    2005-04-16  261  			 */
9ad13a42 Ira Weiny         2014-08-08  262  			dev_notice(&device->dev,
9ad13a42 Ira Weiny         2014-08-08  263  				   "ib_register_mad_agent: Invalid Mgmt Class 0\n");
^1da177e Linus Torvalds    2005-04-16  264  			goto error1;
^1da177e Linus Torvalds    2005-04-16  265  		} else if (is_vendor_class(mad_reg_req->mgmt_class)) {
^1da177e Linus Torvalds    2005-04-16  266  			/*
^1da177e Linus Torvalds    2005-04-16  267  			 * If class is in "new" vendor range,
^1da177e Linus Torvalds    2005-04-16  268  			 * ensure supplied OUI is not zero
^1da177e Linus Torvalds    2005-04-16  269  			 */
9ad13a42 Ira Weiny         2014-08-08  270  			if (!is_vendor_oui(mad_reg_req->oui)) {
9ad13a42 Ira Weiny         2014-08-08  271  				dev_notice(&device->dev,
9ad13a42 Ira Weiny         2014-08-08  272  					   "ib_register_mad_agent: No OUI specified for class 0x%x\n",
9ad13a42 Ira Weiny         2014-08-08  273  					   mad_reg_req->mgmt_class);
^1da177e Linus Torvalds    2005-04-16  274  				goto error1;
^1da177e Linus Torvalds    2005-04-16  275  			}
9ad13a42 Ira Weiny         2014-08-08  276  		}
618a3c03 Hal Rosenstock    2006-03-28  277  		/* Make sure class supplied is consistent with RMPP */
64cb9c6a Hal Rosenstock    2006-04-12  278  		if (!ib_is_mad_class_rmpp(mad_reg_req->mgmt_class)) {
9ad13a42 Ira Weiny         2014-08-08  279  			if (rmpp_version) {
9ad13a42 Ira Weiny         2014-08-08  280  				dev_notice(&device->dev,
9ad13a42 Ira Weiny         2014-08-08  281  					   "ib_register_mad_agent: RMPP version for non-RMPP class 0x%x\n",
9ad13a42 Ira Weiny         2014-08-08  282  					   mad_reg_req->mgmt_class);
618a3c03 Hal Rosenstock    2006-03-28  283  				goto error1;
618a3c03 Hal Rosenstock    2006-03-28  284  			}
9ad13a42 Ira Weiny         2014-08-08  285  		}
1471cb6c Ira Weiny         2014-08-08  286
^1da177e Linus Torvalds    2005-04-16  287  		/* Make sure class supplied is consistent with QP type */
^1da177e Linus Torvalds    2005-04-16  288  		if (qp_type == IB_QPT_SMI) {
^1da177e Linus Torvalds    2005-04-16  289  			if ((mad_reg_req->mgmt_class !=
^1da177e Linus Torvalds    2005-04-16  290  					IB_MGMT_CLASS_SUBN_LID_ROUTED) &&
^1da177e Linus Torvalds    2005-04-16  291  			    (mad_reg_req->mgmt_class !=
9ad13a42 Ira Weiny         2014-08-08  292  					IB_MGMT_CLASS_SUBN_DIRECTED_ROUTE)) {
9ad13a42 Ira Weiny         2014-08-08  293  				dev_notice(&device->dev,
9ad13a42 Ira Weiny         2014-08-08  294  					   "ib_register_mad_agent: Invalid SM QP type: class 0x%x\n",
9ad13a42 Ira Weiny         2014-08-08  295  					   mad_reg_req->mgmt_class);
^1da177e Linus Torvalds    2005-04-16  296  				goto error1;
9ad13a42 Ira Weiny         2014-08-08  297  			}
^1da177e Linus Torvalds    2005-04-16  298  		} else {
^1da177e Linus Torvalds    2005-04-16  299  			if ((mad_reg_req->mgmt_class ==
^1da177e Linus Torvalds    2005-04-16  300  					IB_MGMT_CLASS_SUBN_LID_ROUTED) ||
^1da177e Linus Torvalds    2005-04-16  301  			    (mad_reg_req->mgmt_class ==
9ad13a42 Ira Weiny         2014-08-08  302  					IB_MGMT_CLASS_SUBN_DIRECTED_ROUTE)) {
9ad13a42 Ira Weiny         2014-08-08  303  				dev_notice(&device->dev,
9ad13a42 Ira Weiny         2014-08-08  304  					   "ib_register_mad_agent: Invalid GS QP type: class 0x%x\n",
9ad13a42 Ira Weiny         2014-08-08  305  					   mad_reg_req->mgmt_class);
^1da177e Linus Torvalds    2005-04-16  306  				goto error1;
^1da177e Linus Torvalds    2005-04-16  307  			}
9ad13a42 Ira Weiny         2014-08-08  308  		}
^1da177e Linus Torvalds    2005-04-16  309  	} else {
^1da177e Linus Torvalds    2005-04-16  310  		/* No registration request supplied */
^1da177e Linus Torvalds    2005-04-16  311  		if (!send_handler)
^1da177e Linus Torvalds    2005-04-16  312  			goto error1;
1471cb6c Ira Weiny         2014-08-08  313  		if (registration_flags & IB_MAD_USER_RMPP)
1471cb6c Ira Weiny         2014-08-08  314  			goto error1;
^1da177e Linus Torvalds    2005-04-16  315  	}
^1da177e Linus Torvalds    2005-04-16  316
^1da177e Linus Torvalds    2005-04-16  317  	/* Validate device and port */
^1da177e Linus Torvalds    2005-04-16  318  	port_priv = ib_get_mad_port(device, port_num);
^1da177e Linus Torvalds    2005-04-16  319  	if (!port_priv) {
f57e8ca5 Yuval Shaia       2017-01-19  320  		dev_notice(&device->dev,
f57e8ca5 Yuval Shaia       2017-01-19  321  			   "ib_register_mad_agent: Invalid port %d\n",
f57e8ca5 Yuval Shaia       2017-01-19  322  			   port_num);
^1da177e Linus Torvalds    2005-04-16  323  		ret = ERR_PTR(-ENODEV);
^1da177e Linus Torvalds    2005-04-16  324  		goto error1;
^1da177e Linus Torvalds    2005-04-16  325  	}
^1da177e Linus Torvalds    2005-04-16  326
c8367c4c Ira Weiny         2011-05-19  327  	/* Verify the QP requested is supported.  For example, Ethernet devices
c8367c4c Ira Weiny         2011-05-19  328  	 * will not have QP0 */
c8367c4c Ira Weiny         2011-05-19  329  	if (!port_priv->qp_info[qpn].qp) {
9ad13a42 Ira Weiny         2014-08-08  330  		dev_notice(&device->dev,
9ad13a42 Ira Weiny         2014-08-08  331  			   "ib_register_mad_agent: QP %d not supported\n", qpn);
c8367c4c Ira Weiny         2011-05-19  332  		ret = ERR_PTR(-EPROTONOSUPPORT);
c8367c4c Ira Weiny         2011-05-19  333  		goto error1;
c8367c4c Ira Weiny         2011-05-19  334  	}
c8367c4c Ira Weiny         2011-05-19  335
^1da177e Linus Torvalds    2005-04-16  336  	/* Allocate structures */
de6eb66b Roland Dreier     2005-11-02  337  	mad_agent_priv = kzalloc(sizeof *mad_agent_priv, GFP_KERNEL);
^1da177e Linus Torvalds    2005-04-16  338  	if (!mad_agent_priv) {
^1da177e Linus Torvalds    2005-04-16  339  		ret = ERR_PTR(-ENOMEM);
^1da177e Linus Torvalds    2005-04-16  340  		goto error1;
^1da177e Linus Torvalds    2005-04-16  341  	}
b82cab6b Hal Rosenstock    2005-07-27  342
^1da177e Linus Torvalds    2005-04-16  343  	if (mad_reg_req) {
9893e742 Julia Lawall      2010-05-15  344  		reg_req = kmemdup(mad_reg_req, sizeof *reg_req, GFP_KERNEL);
^1da177e Linus Torvalds    2005-04-16  345  		if (!reg_req) {
^1da177e Linus Torvalds    2005-04-16  346  			ret = ERR_PTR(-ENOMEM);
b82cab6b Hal Rosenstock    2005-07-27  347  			goto error3;
^1da177e Linus Torvalds    2005-04-16  348  		}
^1da177e Linus Torvalds    2005-04-16  349  	}
^1da177e Linus Torvalds    2005-04-16  350
^1da177e Linus Torvalds    2005-04-16  351  	/* Now, fill in the various structures */
^1da177e Linus Torvalds    2005-04-16  352  	mad_agent_priv->qp_info = &port_priv->qp_info[qpn];
^1da177e Linus Torvalds    2005-04-16  353  	mad_agent_priv->reg_req = reg_req;
fa619a77 Hal Rosenstock    2005-07-27  354  	mad_agent_priv->agent.rmpp_version = rmpp_version;
^1da177e Linus Torvalds    2005-04-16  355  	mad_agent_priv->agent.device = device;
^1da177e Linus Torvalds    2005-04-16  356  	mad_agent_priv->agent.recv_handler = recv_handler;
^1da177e Linus Torvalds    2005-04-16  357  	mad_agent_priv->agent.send_handler = send_handler;
^1da177e Linus Torvalds    2005-04-16  358  	mad_agent_priv->agent.context = context;
^1da177e Linus Torvalds    2005-04-16  359  	mad_agent_priv->agent.qp = port_priv->qp_info[qpn].qp;
^1da177e Linus Torvalds    2005-04-16  360  	mad_agent_priv->agent.port_num = port_num;
0f29b46d Ira Weiny         2014-08-08  361  	mad_agent_priv->agent.flags = registration_flags;
d9620a4c Ralph Campbell    2009-02-27  362  	spin_lock_init(&mad_agent_priv->lock);
d9620a4c Ralph Campbell    2009-02-27  363  	INIT_LIST_HEAD(&mad_agent_priv->send_list);
d9620a4c Ralph Campbell    2009-02-27  364  	INIT_LIST_HEAD(&mad_agent_priv->wait_list);
d9620a4c Ralph Campbell    2009-02-27  365  	INIT_LIST_HEAD(&mad_agent_priv->done_list);
d9620a4c Ralph Campbell    2009-02-27  366  	INIT_LIST_HEAD(&mad_agent_priv->rmpp_list);
d9620a4c Ralph Campbell    2009-02-27  367  	INIT_DELAYED_WORK(&mad_agent_priv->timed_work, timeout_sends);
d9620a4c Ralph Campbell    2009-02-27  368  	INIT_LIST_HEAD(&mad_agent_priv->local_list);
d9620a4c Ralph Campbell    2009-02-27  369  	INIT_WORK(&mad_agent_priv->local_work, local_completions);
d9620a4c Ralph Campbell    2009-02-27  370  	atomic_set(&mad_agent_priv->refcount, 1);
d9620a4c Ralph Campbell    2009-02-27  371  	init_completion(&mad_agent_priv->comp);
^1da177e Linus Torvalds    2005-04-16  372
47a2b338 Daniel Jurgens    2017-05-19  373  	ret2 = ib_mad_agent_security_setup(&mad_agent_priv->agent, qp_type);
47a2b338 Daniel Jurgens    2017-05-19  374  	if (ret2) {
47a2b338 Daniel Jurgens    2017-05-19  375  		ret = ERR_PTR(ret2);
47a2b338 Daniel Jurgens    2017-05-19  376  		goto error4;
47a2b338 Daniel Jurgens    2017-05-19  377  	}
74b1ba09 Hans Westgaard Ry 2018-06-07  378  	ib_mad_client_id = ida_simple_get_cyclic(&ib_mad_client_ids,
74b1ba09 Hans Westgaard Ry 2018-06-07  379  						1,
74b1ba09 Hans Westgaard Ry 2018-06-07  380  						BIT(24) - 1,
74b1ba09 Hans Westgaard Ry 2018-06-07  381  						GFP_KERNEL);
74b1ba09 Hans Westgaard Ry 2018-06-07 @382  	if (ib_mad_client_id < 0) {
74b1ba09 Hans Westgaard Ry 2018-06-07  383  		pr_err("Couldn't allocate agent tid; errcode: %#x\n",
74b1ba09 Hans Westgaard Ry 2018-06-07  384  			ib_mad_client_id);
74b1ba09 Hans Westgaard Ry 2018-06-07  385  		ret = ERR_PTR(ib_mad_client_id);
74b1ba09 Hans Westgaard Ry 2018-06-07  386  		goto error4;
74b1ba09 Hans Westgaard Ry 2018-06-07  387  	}
74b1ba09 Hans Westgaard Ry 2018-06-07  388  	mad_agent_priv->agent.hi_tid = ib_mad_client_id;
47a2b338 Daniel Jurgens    2017-05-19  389
^1da177e Linus Torvalds    2005-04-16  390  	spin_lock_irqsave(&port_priv->reg_lock, flags);
^1da177e Linus Torvalds    2005-04-16  391
^1da177e Linus Torvalds    2005-04-16  392  	/*
^1da177e Linus Torvalds    2005-04-16  393  	 * Make sure MAD registration (if supplied)
^1da177e Linus Torvalds    2005-04-16  394  	 * is non overlapping with any existing ones
^1da177e Linus Torvalds    2005-04-16  395  	 */
^1da177e Linus Torvalds    2005-04-16  396  	if (mad_reg_req) {
^1da177e Linus Torvalds    2005-04-16  397  		mgmt_class = convert_mgmt_class(mad_reg_req->mgmt_class);
^1da177e Linus Torvalds    2005-04-16  398  		if (!is_vendor_class(mgmt_class)) {
^1da177e Linus Torvalds    2005-04-16  399  			class = port_priv->version[mad_reg_req->
^1da177e Linus Torvalds    2005-04-16  400  						   mgmt_class_version].class;
^1da177e Linus Torvalds    2005-04-16  401  			if (class) {
^1da177e Linus Torvalds    2005-04-16  402  				method = class->method_table[mgmt_class];
^1da177e Linus Torvalds    2005-04-16  403  				if (method) {
^1da177e Linus Torvalds    2005-04-16  404  					if (method_in_use(&method,
^1da177e Linus Torvalds    2005-04-16  405  							   mad_reg_req))
47a2b338 Daniel Jurgens    2017-05-19  406  						goto error5;
^1da177e Linus Torvalds    2005-04-16  407  				}
^1da177e Linus Torvalds    2005-04-16  408  			}
^1da177e Linus Torvalds    2005-04-16  409  			ret2 = add_nonoui_reg_req(mad_reg_req, mad_agent_priv,
^1da177e Linus Torvalds    2005-04-16  410  						  mgmt_class);
^1da177e Linus Torvalds    2005-04-16  411  		} else {
^1da177e Linus Torvalds    2005-04-16  412  			/* "New" vendor class range */
^1da177e Linus Torvalds    2005-04-16  413  			vendor = port_priv->version[mad_reg_req->
^1da177e Linus Torvalds    2005-04-16  414  						    mgmt_class_version].vendor;
^1da177e Linus Torvalds    2005-04-16  415  			if (vendor) {
^1da177e Linus Torvalds    2005-04-16  416  				vclass = vendor_class_index(mgmt_class);
^1da177e Linus Torvalds    2005-04-16  417  				vendor_class = vendor->vendor_class[vclass];
^1da177e Linus Torvalds    2005-04-16  418  				if (vendor_class) {
^1da177e Linus Torvalds    2005-04-16  419  					if (is_vendor_method_in_use(
^1da177e Linus Torvalds    2005-04-16  420  							vendor_class,
^1da177e Linus Torvalds    2005-04-16  421  							mad_reg_req))
47a2b338 Daniel Jurgens    2017-05-19  422  						goto error5;
^1da177e Linus Torvalds    2005-04-16  423  				}
^1da177e Linus Torvalds    2005-04-16  424  			}
^1da177e Linus Torvalds    2005-04-16  425  			ret2 = add_oui_reg_req(mad_reg_req, mad_agent_priv);
^1da177e Linus Torvalds    2005-04-16  426  		}
^1da177e Linus Torvalds    2005-04-16  427  		if (ret2) {
^1da177e Linus Torvalds    2005-04-16  428  			ret = ERR_PTR(ret2);
47a2b338 Daniel Jurgens    2017-05-19  429  			goto error5;
^1da177e Linus Torvalds    2005-04-16  430  		}
^1da177e Linus Torvalds    2005-04-16  431  	}
^1da177e Linus Torvalds    2005-04-16  432
^1da177e Linus Torvalds    2005-04-16  433  	/* Add mad agent into port's agent list */
^1da177e Linus Torvalds    2005-04-16  434  	list_add_tail(&mad_agent_priv->agent_list, &port_priv->agent_list);
^1da177e Linus Torvalds    2005-04-16  435  	spin_unlock_irqrestore(&port_priv->reg_lock, flags);
^1da177e Linus Torvalds    2005-04-16  436
^1da177e Linus Torvalds    2005-04-16  437  	return &mad_agent_priv->agent;
47a2b338 Daniel Jurgens    2017-05-19  438  error5:
^1da177e Linus Torvalds    2005-04-16  439  	spin_unlock_irqrestore(&port_priv->reg_lock, flags);
47a2b338 Daniel Jurgens    2017-05-19  440  	ib_mad_agent_security_cleanup(&mad_agent_priv->agent);
74b1ba09 Hans Westgaard Ry 2018-06-07  441  	ida_simple_remove(&ib_mad_client_ids, ib_mad_client_id);
74b1ba09 Hans Westgaard Ry 2018-06-07  442
47a2b338 Daniel Jurgens    2017-05-19  443  error4:
^1da177e Linus Torvalds    2005-04-16  444  	kfree(reg_req);
b82cab6b Hal Rosenstock    2005-07-27  445  error3:
2012a116 Adrian Bunk       2005-11-27  446  	kfree(mad_agent_priv);
^1da177e Linus Torvalds    2005-04-16  447  error1:
^1da177e Linus Torvalds    2005-04-16  448  	return ret;
^1da177e Linus Torvalds    2005-04-16  449  }
^1da177e Linus Torvalds    2005-04-16  450  EXPORT_SYMBOL(ib_register_mad_agent);
^1da177e Linus Torvalds    2005-04-16  451

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH v3 2/2] IB/mad: Use ID allocator routines to allocate agent number (fwd)
  2018-06-16 16:04 [PATCH v3 2/2] IB/mad: Use ID allocator routines to allocate agent number (fwd) Julia Lawall
@ 2018-06-17  6:35 ` jackm
  2018-06-17  6:42   ` Julia Lawall
  0 siblings, 1 reply; 3+ messages in thread
From: jackm @ 2018-06-17  6:35 UTC (permalink / raw)
  To: Julia Lawall
  Cc: Hans Westgaard Ry, Doug Ledford, Jason Gunthorpe, Hakon Bugge,
	Parav Pandit, Pravin Shedge, Matthew Wilcox, Andrew Morton,
	Jeff Layton, Wei Wang, Chris Mi, Eric Biggers, Rasmus Villemoes,
	Mel Gorman, linux-rdma, linux-kernel, kbuild-all

On Sat, 16 Jun 2018 18:04:41 +0200 (CEST)
Julia Lawall <julia.lawall@lip6.fr> wrote:

> ib_mad_client_id is declared as u32, so it will not be < 0 (line 382).
> 
> julia
> 
Julia, your are correct.
However, I was under the impression that this patch set was abandoned
in favor of the one submitted by Matthew Wilcox! (Convert IB/mad to use
an IDR for agent IDs)

Hans, Matthew?

-Jack
> ---------- Forwarded message ----------
> Date: Fri, 8 Jun 2018 08:49:57 +0800
> From: kbuild test robot <lkp@intel.com>
> To: kbuild@01.org
> Cc: Julia Lawall <julia.lawall@lip6.fr>
> Subject: Re: [PATCH v3 2/2] IB/mad: Use ID allocator routines to
> allocate agent number
> 
> Hi Hans,
> 
> Thank you for the patch! Perhaps something to improve:
> 
> [auto build test WARNING on linus/master]
> [also build test WARNING on v4.17]
> [if your patch is applied to the wrong git tree, please drop us a
> note to help improve the system]
> 
> url:
> https://github.com/0day-ci/linux/commits/Hans-Westgaard-Ry/IB-mad-Use-ID-allocator-routines-to-allocate-agent-number/20180608-022348 ::::::
> branch date: 6 hours ago :::::: commit date: 6 hours ago
> 
> >> drivers/infiniband/core/mad.c:382:5-21: WARNING: Unsigned
> >> expression compared with zero: ib_mad_client_id < 0  
> 
> #
> https://github.com/0day-ci/linux/commit/74b1ba09003c9d132878734bf44f32a62bad31db
> git remote add linux-review https://github.com/0day-ci/linux git
> remote update linux-review git checkout
> 74b1ba09003c9d132878734bf44f32a62bad31db vim +382
> drivers/infiniband/core/mad.c
> 
> 2527e681 Sean Hefty        2006-07-20  190
> ^1da177e Linus Torvalds    2005-04-16  191  /*
> ^1da177e Linus Torvalds    2005-04-16  192   * ib_register_mad_agent
> - Register to send/receive MADs ^1da177e Linus Torvalds
> 2005-04-16  193   */ ^1da177e Linus Torvalds    2005-04-16  194
> struct ib_mad_agent *ib_register_mad_agent(struct ib_device *device,
> ^1da177e Linus Torvalds    2005-04-16  195
> 					   u8 port_num, ^1da177e
> Linus Torvalds    2005-04-16  196
> 					   enum ib_qp_type qp_type,
> ^1da177e Linus Torvalds    2005-04-16  197
> 					   struct ib_mad_reg_req
> *mad_reg_req, ^1da177e Linus Torvalds    2005-04-16  198
> 					   u8 rmpp_version, ^1da177e
> Linus Torvalds    2005-04-16  199
> 					   ib_mad_send_handler
> send_handler, ^1da177e Linus Torvalds    2005-04-16  200
> 					   ib_mad_recv_handler
> recv_handler, 0f29b46d Ira Weiny         2014-08-08  201
> 					   void *context, 0f29b46d
> Ira Weiny         2014-08-08  202
> 					   u32 registration_flags)
> ^1da177e Linus Torvalds    2005-04-16  203  { ^1da177e Linus
> Torvalds    2005-04-16  204  	struct ib_mad_port_private
> *port_priv; ^1da177e Linus Torvalds    2005-04-16  205
> struct ib_mad_agent *ret = ERR_PTR(-EINVAL); ^1da177e Linus
> Torvalds    2005-04-16  206  	struct ib_mad_agent_private
> *mad_agent_priv; ^1da177e Linus Torvalds    2005-04-16  207
> struct ib_mad_reg_req *reg_req = NULL; ^1da177e Linus Torvalds
> 2005-04-16  208  	struct ib_mad_mgmt_class_table *class;
> ^1da177e Linus Torvalds    2005-04-16  209  	struct
> ib_mad_mgmt_vendor_class_table *vendor; ^1da177e Linus Torvalds
> 2005-04-16  210  	struct ib_mad_mgmt_vendor_class
> *vendor_class; ^1da177e Linus Torvalds    2005-04-16  211
> struct ib_mad_mgmt_method_table *method; ^1da177e Linus Torvalds
> 2005-04-16  212  	int ret2, qpn; ^1da177e Linus Torvalds
> 2005-04-16  213  	unsigned long flags; ^1da177e Linus
> Torvalds    2005-04-16  214  	u8 mgmt_class, vclass; 74b1ba09
> Hans Westgaard Ry 2018-06-07  215  	u32 ib_mad_client_id;
> ^1da177e Linus Torvalds    2005-04-16  216  	/* Validate
> parameters */ ^1da177e Linus Torvalds    2005-04-16  217  	qpn
> = get_spl_qp_index(qp_type); 9ad13a42 Ira Weiny         2014-08-08
> 218  	if (qpn == -1) { 9ad13a42 Ira Weiny         2014-08-08
> 219  		dev_notice(&device->dev, 9ad13a42 Ira
> Weiny         2014-08-08  220
> "ib_register_mad_agent: invalid QP Type %d\n", 9ad13a42 Ira
> Weiny         2014-08-08  221  			   qp_type);
> ^1da177e Linus Torvalds    2005-04-16  222  		goto
> error1; 9ad13a42 Ira Weiny         2014-08-08  223  	}
> ^1da177e Linus Torvalds    2005-04-16  224 9ad13a42 Ira Weiny
> 2014-08-08  225  	if (rmpp_version && rmpp_version !=
> IB_MGMT_RMPP_VERSION) { 9ad13a42 Ira Weiny         2014-08-08  226
> 		dev_notice(&device->dev, 9ad13a42 Ira Weiny
> 2014-08-08  227  			   "ib_register_mad_agent:
> invalid RMPP Version %u\n", 9ad13a42 Ira Weiny         2014-08-08
> 228  			   rmpp_version); fa619a77 Hal
> Rosenstock    2005-07-27  229  		goto error1; 9ad13a42
> Ira Weiny         2014-08-08  230  	} ^1da177e Linus
> Torvalds    2005-04-16  231 ^1da177e Linus Torvalds    2005-04-16
> 232  	/* Validate MAD registration request if supplied */
> ^1da177e Linus Torvalds    2005-04-16  233  	if (mad_reg_req)
> { 9ad13a42 Ira Weiny         2014-08-08  234  		if
> (mad_reg_req->mgmt_class_version >= MAX_MGMT_VERSION) { 9ad13a42 Ira
> Weiny         2014-08-08  235
> dev_notice(&device->dev, 9ad13a42 Ira Weiny         2014-08-08  236
> 				   "ib_register_mad_agent: invalid
> Class Version %u\n", 9ad13a42 Ira Weiny         2014-08-08  237
> 				   mad_reg_req->mgmt_class_version);
> ^1da177e Linus Torvalds    2005-04-16  238
> goto error1; 9ad13a42 Ira Weiny         2014-08-08  239
> 		} 9ad13a42 Ira Weiny         2014-08-08  240
> 		if (!recv_handler) { 9ad13a42 Ira Weiny
> 2014-08-08  241  			dev_notice(&device->dev,
> 9ad13a42 Ira Weiny         2014-08-08  242
> 				   "ib_register_mad_agent: no
> recv_handler\n"); ^1da177e Linus Torvalds    2005-04-16  243
> 			goto error1; 9ad13a42 Ira Weiny
> 2014-08-08  244  		} ^1da177e Linus Torvalds
> 2005-04-16  245  		if (mad_reg_req->mgmt_class >=
> MAX_MGMT_CLASS) { ^1da177e Linus Torvalds    2005-04-16  246
> 			/* ^1da177e Linus Torvalds    2005-04-16
> 247  			 * IB_MGMT_CLASS_SUBN_DIRECTED_ROUTE is
> the only ^1da177e Linus Torvalds    2005-04-16  248
> 			 * one in this range currently allowed
> ^1da177e Linus Torvalds    2005-04-16  249
> */ ^1da177e Linus Torvalds    2005-04-16  250
> 			if (mad_reg_req->mgmt_class != 9ad13a42 Ira
> Weiny         2014-08-08  251
> IB_MGMT_CLASS_SUBN_DIRECTED_ROUTE) { 9ad13a42 Ira Weiny
> 2014-08-08  252
> dev_notice(&device->dev, 9ad13a42 Ira Weiny         2014-08-08  253
> 					   "ib_register_mad_agent:
> Invalid Mgmt Class 0x%x\n", 9ad13a42 Ira Weiny         2014-08-08
> 254
> mad_reg_req->mgmt_class); ^1da177e Linus Torvalds    2005-04-16  255
> 				goto error1; 9ad13a42 Ira
> Weiny         2014-08-08  256  			} ^1da177e
> Linus Torvalds    2005-04-16  257  		} else if
> (mad_reg_req->mgmt_class == 0) { ^1da177e Linus Torvalds
> 2005-04-16  258  			/* ^1da177e Linus
> Torvalds    2005-04-16  259  			 * Class 0 is
> reserved in IBA and is used for ^1da177e Linus Torvalds
> 2005-04-16  260  			 * aliasing of
> IB_MGMT_CLASS_SUBN_DIRECTED_ROUTE ^1da177e Linus Torvalds
> 2005-04-16  261  			 */ 9ad13a42 Ira
> Weiny         2014-08-08  262
> dev_notice(&device->dev, 9ad13a42 Ira Weiny         2014-08-08  263
> 				   "ib_register_mad_agent: Invalid
> Mgmt Class 0\n"); ^1da177e Linus Torvalds    2005-04-16  264
> 			goto error1; ^1da177e Linus Torvalds
> 2005-04-16  265  		} else if
> (is_vendor_class(mad_reg_req->mgmt_class)) { ^1da177e Linus
> Torvalds    2005-04-16  266  			/* ^1da177e
> Linus Torvalds    2005-04-16  267  			 * If
> class is in "new" vendor range, ^1da177e Linus Torvalds
> 2005-04-16  268  			 * ensure supplied OUI is
> not zero ^1da177e Linus Torvalds    2005-04-16  269
> 			 */ 9ad13a42 Ira Weiny         2014-08-08
> 270  			if (!is_vendor_oui(mad_reg_req->oui))
> { 9ad13a42 Ira Weiny         2014-08-08  271
> 				dev_notice(&device->dev, 9ad13a42 Ira
> Weiny         2014-08-08  272
> 					   "ib_register_mad_agent: No
> OUI specified for class 0x%x\n", 9ad13a42 Ira Weiny
> 2014-08-08  273
> mad_reg_req->mgmt_class); ^1da177e Linus Torvalds    2005-04-16  274
> 				goto error1; ^1da177e Linus
> Torvalds    2005-04-16  275  			} 9ad13a42 Ira
> Weiny         2014-08-08  276  		} 618a3c03 Hal
> Rosenstock    2006-03-28  277  		/* Make sure class
> supplied is consistent with RMPP */ 64cb9c6a Hal Rosenstock
> 2006-04-12  278  		if
> (!ib_is_mad_class_rmpp(mad_reg_req->mgmt_class)) { 9ad13a42 Ira
> Weiny         2014-08-08  279  			if
> (rmpp_version) { 9ad13a42 Ira Weiny         2014-08-08  280
> 				dev_notice(&device->dev, 9ad13a42 Ira
> Weiny         2014-08-08  281
> 					   "ib_register_mad_agent:
> RMPP version for non-RMPP class 0x%x\n", 9ad13a42 Ira Weiny
> 2014-08-08  282
> mad_reg_req->mgmt_class); 618a3c03 Hal Rosenstock    2006-03-28  283
> 				goto error1; 618a3c03 Hal
> Rosenstock    2006-03-28  284  			} 9ad13a42 Ira
> Weiny         2014-08-08  285  		} 1471cb6c Ira
> Weiny         2014-08-08  286 ^1da177e Linus Torvalds    2005-04-16
> 287  		/* Make sure class supplied is consistent with
> QP type */ ^1da177e Linus Torvalds    2005-04-16  288
> 		if (qp_type == IB_QPT_SMI) { ^1da177e Linus
> Torvalds    2005-04-16  289  			if
> ((mad_reg_req->mgmt_class != ^1da177e Linus Torvalds    2005-04-16
> 290
> IB_MGMT_CLASS_SUBN_LID_ROUTED) && ^1da177e Linus Torvalds
> 2005-04-16  291
> (mad_reg_req->mgmt_class != 9ad13a42 Ira Weiny         2014-08-08
> 292
> IB_MGMT_CLASS_SUBN_DIRECTED_ROUTE)) { 9ad13a42 Ira Weiny
> 2014-08-08  293
> dev_notice(&device->dev, 9ad13a42 Ira Weiny         2014-08-08  294
> 					   "ib_register_mad_agent:
> Invalid SM QP type: class 0x%x\n", 9ad13a42 Ira Weiny
> 2014-08-08  295
> mad_reg_req->mgmt_class); ^1da177e Linus Torvalds    2005-04-16  296
> 				goto error1; 9ad13a42 Ira
> Weiny         2014-08-08  297  			} ^1da177e
> Linus Torvalds    2005-04-16  298  		} else { ^1da177e
> Linus Torvalds    2005-04-16  299  			if
> ((mad_reg_req->mgmt_class == ^1da177e Linus Torvalds    2005-04-16
> 300
> IB_MGMT_CLASS_SUBN_LID_ROUTED) || ^1da177e Linus Torvalds
> 2005-04-16  301  			    (mad_reg_req->mgmt_class
> == 9ad13a42 Ira Weiny         2014-08-08  302
> 					IB_MGMT_CLASS_SUBN_DIRECTED_ROUTE))
> { 9ad13a42 Ira Weiny         2014-08-08  303
> 				dev_notice(&device->dev, 9ad13a42 Ira
> Weiny         2014-08-08  304
> 					   "ib_register_mad_agent:
> Invalid GS QP type: class 0x%x\n", 9ad13a42 Ira Weiny
> 2014-08-08  305
> mad_reg_req->mgmt_class); ^1da177e Linus Torvalds    2005-04-16  306
> 				goto error1; ^1da177e Linus
> Torvalds    2005-04-16  307  			} 9ad13a42 Ira
> Weiny         2014-08-08  308  		} ^1da177e Linus
> Torvalds    2005-04-16  309  	} else { ^1da177e Linus
> Torvalds    2005-04-16  310  		/* No registration
> request supplied */ ^1da177e Linus Torvalds    2005-04-16  311
> 		if (!send_handler) ^1da177e Linus Torvalds
> 2005-04-16  312  			goto error1; 1471cb6c Ira
> Weiny         2014-08-08  313  		if (registration_flags
> & IB_MAD_USER_RMPP) 1471cb6c Ira Weiny         2014-08-08  314
> 			goto error1; ^1da177e Linus Torvalds
> 2005-04-16  315  	} ^1da177e Linus Torvalds    2005-04-16  316
> ^1da177e Linus Torvalds    2005-04-16  317  	/* Validate
> device and port */ ^1da177e Linus Torvalds    2005-04-16  318
> 	port_priv = ib_get_mad_port(device, port_num); ^1da177e Linus
> Torvalds    2005-04-16  319  	if (!port_priv) { f57e8ca5 Yuval
> Shaia       2017-01-19  320  		dev_notice(&device->dev,
> f57e8ca5 Yuval Shaia       2017-01-19  321
> 			   "ib_register_mad_agent: Invalid port
> %d\n", f57e8ca5 Yuval Shaia       2017-01-19  322
> 			   port_num); ^1da177e Linus Torvalds
> 2005-04-16  323  		ret = ERR_PTR(-ENODEV); ^1da177e
> Linus Torvalds    2005-04-16  324  		goto error1;
> ^1da177e Linus Torvalds    2005-04-16  325  	} ^1da177e Linus
> Torvalds    2005-04-16  326 c8367c4c Ira Weiny         2011-05-19
> 327  	/* Verify the QP requested is supported.  For example,
> Ethernet devices c8367c4c Ira Weiny         2011-05-19  328
> * will not have QP0 */ c8367c4c Ira Weiny         2011-05-19  329
> 	if (!port_priv->qp_info[qpn].qp) { 9ad13a42 Ira Weiny
> 2014-08-08  330  		dev_notice(&device->dev, 9ad13a42
> Ira Weiny         2014-08-08  331
> "ib_register_mad_agent: QP %d not supported\n", qpn); c8367c4c Ira
> Weiny         2011-05-19  332  		ret =
> ERR_PTR(-EPROTONOSUPPORT); c8367c4c Ira Weiny         2011-05-19
> 333  		goto error1; c8367c4c Ira Weiny
> 2011-05-19  334  	} c8367c4c Ira Weiny         2011-05-19  335
> ^1da177e Linus Torvalds    2005-04-16  336  	/* Allocate
> structures */ de6eb66b Roland Dreier     2005-11-02  337
> mad_agent_priv = kzalloc(sizeof *mad_agent_priv, GFP_KERNEL);
> ^1da177e Linus Torvalds    2005-04-16  338  	if
> (!mad_agent_priv) { ^1da177e Linus Torvalds    2005-04-16  339
> 		ret = ERR_PTR(-ENOMEM); ^1da177e Linus Torvalds
> 2005-04-16  340  		goto error1; ^1da177e Linus
> Torvalds    2005-04-16  341  	} b82cab6b Hal Rosenstock
> 2005-07-27  342 ^1da177e Linus Torvalds    2005-04-16  343
> if (mad_reg_req) { 9893e742 Julia Lawall      2010-05-15  344
> 		reg_req = kmemdup(mad_reg_req, sizeof *reg_req,
> GFP_KERNEL); ^1da177e Linus Torvalds    2005-04-16  345
> 		if (!reg_req) { ^1da177e Linus Torvalds
> 2005-04-16  346  			ret = ERR_PTR(-ENOMEM);
> b82cab6b Hal Rosenstock    2005-07-27  347
> goto error3; ^1da177e Linus Torvalds    2005-04-16  348
> 		} ^1da177e Linus Torvalds    2005-04-16  349
> 	} ^1da177e Linus Torvalds    2005-04-16  350 ^1da177e Linus
> Torvalds    2005-04-16  351  	/* Now, fill in the various
> structures */ ^1da177e Linus Torvalds    2005-04-16  352
> mad_agent_priv->qp_info = &port_priv->qp_info[qpn]; ^1da177e Linus
> Torvalds    2005-04-16  353  	mad_agent_priv->reg_req =
> reg_req; fa619a77 Hal Rosenstock    2005-07-27  354
> mad_agent_priv->agent.rmpp_version = rmpp_version; ^1da177e Linus
> Torvalds    2005-04-16  355  	mad_agent_priv->agent.device =
> device; ^1da177e Linus Torvalds    2005-04-16  356
> mad_agent_priv->agent.recv_handler = recv_handler; ^1da177e Linus
> Torvalds    2005-04-16  357
> mad_agent_priv->agent.send_handler = send_handler; ^1da177e Linus
> Torvalds    2005-04-16  358  	mad_agent_priv->agent.context =
> context; ^1da177e Linus Torvalds    2005-04-16  359
> mad_agent_priv->agent.qp = port_priv->qp_info[qpn].qp; ^1da177e Linus
> Torvalds    2005-04-16  360  	mad_agent_priv->agent.port_num =
> port_num; 0f29b46d Ira Weiny         2014-08-08  361
> mad_agent_priv->agent.flags = registration_flags; d9620a4c Ralph
> Campbell    2009-02-27  362
> spin_lock_init(&mad_agent_priv->lock); d9620a4c Ralph Campbell
> 2009-02-27  363  	INIT_LIST_HEAD(&mad_agent_priv->send_list);
> d9620a4c Ralph Campbell    2009-02-27  364
> INIT_LIST_HEAD(&mad_agent_priv->wait_list); d9620a4c Ralph
> Campbell    2009-02-27  365
> INIT_LIST_HEAD(&mad_agent_priv->done_list); d9620a4c Ralph
> Campbell    2009-02-27  366
> INIT_LIST_HEAD(&mad_agent_priv->rmpp_list); d9620a4c Ralph
> Campbell    2009-02-27  367
> INIT_DELAYED_WORK(&mad_agent_priv->timed_work, timeout_sends);
> d9620a4c Ralph Campbell    2009-02-27  368
> INIT_LIST_HEAD(&mad_agent_priv->local_list); d9620a4c Ralph
> Campbell    2009-02-27  369
> INIT_WORK(&mad_agent_priv->local_work, local_completions); d9620a4c
> Ralph Campbell    2009-02-27  370
> atomic_set(&mad_agent_priv->refcount, 1); d9620a4c Ralph Campbell
> 2009-02-27  371  	init_completion(&mad_agent_priv->comp);
> ^1da177e Linus Torvalds    2005-04-16  372 47a2b338 Daniel Jurgens
> 2017-05-19  373  	ret2 =
> ib_mad_agent_security_setup(&mad_agent_priv->agent, qp_type);
> 47a2b338 Daniel Jurgens    2017-05-19  374  	if (ret2)
> { 47a2b338 Daniel Jurgens    2017-05-19  375  		ret =
> ERR_PTR(ret2); 47a2b338 Daniel Jurgens    2017-05-19  376
> 		goto error4; 47a2b338 Daniel Jurgens    2017-05-19
> 377  	} 74b1ba09 Hans Westgaard Ry 2018-06-07  378
> ib_mad_client_id = ida_simple_get_cyclic(&ib_mad_client_ids, 74b1ba09
> Hans Westgaard Ry 2018-06-07  379
> 						1, 74b1ba09 Hans
> Westgaard Ry 2018-06-07  380
> 						BIT(24) - 1, 74b1ba09
> Hans Westgaard Ry 2018-06-07  381
> 						GFP_KERNEL); 74b1ba09
> Hans Westgaard Ry 2018-06-07 @382  	if (ib_mad_client_id < 0)
> { 74b1ba09 Hans Westgaard Ry 2018-06-07  383
> pr_err("Couldn't allocate agent tid; errcode: %#x\n", 74b1ba09 Hans
> Westgaard Ry 2018-06-07  384
> ib_mad_client_id); 74b1ba09 Hans Westgaard Ry 2018-06-07  385
> 		ret = ERR_PTR(ib_mad_client_id); 74b1ba09 Hans
> Westgaard Ry 2018-06-07  386  		goto error4; 74b1ba09
> Hans Westgaard Ry 2018-06-07  387  	} 74b1ba09 Hans Westgaard
> Ry 2018-06-07  388  	mad_agent_priv->agent.hi_tid =
> ib_mad_client_id; 47a2b338 Daniel Jurgens    2017-05-19  389 ^1da177e
> Linus Torvalds    2005-04-16  390
> spin_lock_irqsave(&port_priv->reg_lock, flags); ^1da177e Linus
> Torvalds    2005-04-16  391 ^1da177e Linus Torvalds    2005-04-16
> 392  	/* ^1da177e Linus Torvalds    2005-04-16  393
> * Make sure MAD registration (if supplied) ^1da177e Linus Torvalds
> 2005-04-16  394  	 * is non overlapping with any existing ones
> ^1da177e Linus Torvalds    2005-04-16  395  	 */ ^1da177e
> Linus Torvalds    2005-04-16  396  	if (mad_reg_req)
> { ^1da177e Linus Torvalds    2005-04-16  397
> mgmt_class = convert_mgmt_class(mad_reg_req->mgmt_class); ^1da177e
> Linus Torvalds    2005-04-16  398  		if
> (!is_vendor_class(mgmt_class)) { ^1da177e Linus Torvalds
> 2005-04-16  399  			class =
> port_priv->version[mad_reg_req-> ^1da177e Linus Torvalds
> 2005-04-16  400
> mgmt_class_version].class; ^1da177e Linus Torvalds    2005-04-16
> 401  			if (class) { ^1da177e Linus Torvalds
> 2005-04-16  402  				method =
> class->method_table[mgmt_class]; ^1da177e Linus Torvalds
> 2005-04-16  403  				if (method)
> { ^1da177e Linus Torvalds    2005-04-16  404
> 					if (method_in_use(&method,
> ^1da177e Linus Torvalds    2005-04-16  405
> 							   mad_reg_req))
> 47a2b338 Daniel Jurgens    2017-05-19  406
> 						goto error5; ^1da177e
> Linus Torvalds    2005-04-16  407  				}
> ^1da177e Linus Torvalds    2005-04-16  408  			}
> ^1da177e Linus Torvalds    2005-04-16  409
> ret2 = add_nonoui_reg_req(mad_reg_req, mad_agent_priv, ^1da177e Linus
> Torvalds    2005-04-16  410
> 						  mgmt_class);
> ^1da177e Linus Torvalds    2005-04-16  411  		} else
> { ^1da177e Linus Torvalds    2005-04-16  412
> 			/* "New" vendor class range */ ^1da177e Linus
> Torvalds    2005-04-16  413  			vendor =
> port_priv->version[mad_reg_req-> ^1da177e Linus Torvalds
> 2005-04-16  414
> mgmt_class_version].vendor; ^1da177e Linus Torvalds    2005-04-16
> 415  			if (vendor) { ^1da177e Linus Torvalds
> 2005-04-16  416  				vclass =
> vendor_class_index(mgmt_class); ^1da177e Linus Torvalds
> 2005-04-16  417  				vendor_class =
> vendor->vendor_class[vclass]; ^1da177e Linus Torvalds    2005-04-16
> 418  				if (vendor_class) { ^1da177e
> Linus Torvalds    2005-04-16  419
> 					if
> (is_vendor_method_in_use( ^1da177e Linus Torvalds    2005-04-16  420
> 							vendor_class,
> ^1da177e Linus Torvalds    2005-04-16  421
> 							mad_reg_req))
> 47a2b338 Daniel Jurgens    2017-05-19  422
> 						goto error5; ^1da177e
> Linus Torvalds    2005-04-16  423  				}
> ^1da177e Linus Torvalds    2005-04-16  424  			}
> ^1da177e Linus Torvalds    2005-04-16  425
> ret2 = add_oui_reg_req(mad_reg_req, mad_agent_priv); ^1da177e Linus
> Torvalds    2005-04-16  426  		} ^1da177e Linus
> Torvalds    2005-04-16  427  		if (ret2) { ^1da177e
> Linus Torvalds    2005-04-16  428  			ret =
> ERR_PTR(ret2); 47a2b338 Daniel Jurgens    2017-05-19  429
> 			goto error5; ^1da177e Linus Torvalds
> 2005-04-16  430  		} ^1da177e Linus Torvalds
> 2005-04-16  431  	} ^1da177e Linus Torvalds    2005-04-16  432
> ^1da177e Linus Torvalds    2005-04-16  433  	/* Add mad agent
> into port's agent list */ ^1da177e Linus Torvalds    2005-04-16  434
> 	list_add_tail(&mad_agent_priv->agent_list,
> &port_priv->agent_list); ^1da177e Linus Torvalds    2005-04-16  435
> 	spin_unlock_irqrestore(&port_priv->reg_lock, flags); ^1da177e
> Linus Torvalds    2005-04-16  436 ^1da177e Linus Torvalds
> 2005-04-16  437  	return &mad_agent_priv->agent; 47a2b338
> Daniel Jurgens    2017-05-19  438  error5: ^1da177e Linus Torvalds
> 2005-04-16  439  	spin_unlock_irqrestore(&port_priv->reg_lock,
> flags); 47a2b338 Daniel Jurgens    2017-05-19  440
> ib_mad_agent_security_cleanup(&mad_agent_priv->agent); 74b1ba09 Hans
> Westgaard Ry 2018-06-07  441
> ida_simple_remove(&ib_mad_client_ids, ib_mad_client_id); 74b1ba09
> Hans Westgaard Ry 2018-06-07  442 47a2b338 Daniel Jurgens
> 2017-05-19  443  error4: ^1da177e Linus Torvalds    2005-04-16  444
> 	kfree(reg_req); b82cab6b Hal Rosenstock    2005-07-27  445
> error3: 2012a116 Adrian Bunk       2005-11-27  446
> kfree(mad_agent_priv); ^1da177e Linus Torvalds    2005-04-16  447
> error1: ^1da177e Linus Torvalds    2005-04-16  448  	return
> ret; ^1da177e Linus Torvalds    2005-04-16  449  } ^1da177e Linus
> Torvalds    2005-04-16  450  EXPORT_SYMBOL(ib_register_mad_agent);
> ^1da177e Linus Torvalds    2005-04-16  451
> 
> ---
> 0-DAY kernel test infrastructure                Open Source
> Technology Center
> https://lists.01.org/pipermail/kbuild-all                   Intel
> Corporation

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH v3 2/2] IB/mad: Use ID allocator routines to allocate agent number (fwd)
  2018-06-17  6:35 ` jackm
@ 2018-06-17  6:42   ` Julia Lawall
  0 siblings, 0 replies; 3+ messages in thread
From: Julia Lawall @ 2018-06-17  6:42 UTC (permalink / raw)
  To: jackm
  Cc: Julia Lawall, Hans Westgaard Ry, Doug Ledford, Jason Gunthorpe,
	Hakon Bugge, Parav Pandit, Pravin Shedge, Matthew Wilcox,
	Andrew Morton, Jeff Layton, Wei Wang, Chris Mi, Eric Biggers,
	Rasmus Villemoes, Mel Gorman, linux-rdma, linux-kernel,
	kbuild-all



On Sun, 17 Jun 2018, jackm wrote:

> On Sat, 16 Jun 2018 18:04:41 +0200 (CEST)
> Julia Lawall <julia.lawall@lip6.fr> wrote:
>
> > ib_mad_client_id is declared as u32, so it will not be < 0 (line 382).
> >
> > julia
> >
> Julia, your are correct.
> However, I was under the impression that this patch set was abandoned
> in favor of the one submitted by Matthew Wilcox! (Convert IB/mad to use
> an IDR for agent IDs)

No idea.  I just get the kbuild reports, and this was one that I didn't
get to in a timely manner.  So it's probably fine to ignore it.

julia

>
> Hans, Matthew?
>
> -Jack
> > ---------- Forwarded message ----------
> > Date: Fri, 8 Jun 2018 08:49:57 +0800
> > From: kbuild test robot <lkp@intel.com>
> > To: kbuild@01.org
> > Cc: Julia Lawall <julia.lawall@lip6.fr>
> > Subject: Re: [PATCH v3 2/2] IB/mad: Use ID allocator routines to
> > allocate agent number
> >
> > Hi Hans,
> >
> > Thank you for the patch! Perhaps something to improve:
> >
> > [auto build test WARNING on linus/master]
> > [also build test WARNING on v4.17]
> > [if your patch is applied to the wrong git tree, please drop us a
> > note to help improve the system]
> >
> > url:
> > https://github.com/0day-ci/linux/commits/Hans-Westgaard-Ry/IB-mad-Use-ID-allocator-routines-to-allocate-agent-number/20180608-022348 ::::::
> > branch date: 6 hours ago :::::: commit date: 6 hours ago
> >
> > >> drivers/infiniband/core/mad.c:382:5-21: WARNING: Unsigned
> > >> expression compared with zero: ib_mad_client_id < 0
> >
> > #
> > https://github.com/0day-ci/linux/commit/74b1ba09003c9d132878734bf44f32a62bad31db
> > git remote add linux-review https://github.com/0day-ci/linux git
> > remote update linux-review git checkout
> > 74b1ba09003c9d132878734bf44f32a62bad31db vim +382
> > drivers/infiniband/core/mad.c
> >
> > 2527e681 Sean Hefty        2006-07-20  190
> > ^1da177e Linus Torvalds    2005-04-16  191  /*
> > ^1da177e Linus Torvalds    2005-04-16  192   * ib_register_mad_agent
> > - Register to send/receive MADs ^1da177e Linus Torvalds
> > 2005-04-16  193   */ ^1da177e Linus Torvalds    2005-04-16  194
> > struct ib_mad_agent *ib_register_mad_agent(struct ib_device *device,
> > ^1da177e Linus Torvalds    2005-04-16  195
> > 					   u8 port_num, ^1da177e
> > Linus Torvalds    2005-04-16  196
> > 					   enum ib_qp_type qp_type,
> > ^1da177e Linus Torvalds    2005-04-16  197
> > 					   struct ib_mad_reg_req
> > *mad_reg_req, ^1da177e Linus Torvalds    2005-04-16  198
> > 					   u8 rmpp_version, ^1da177e
> > Linus Torvalds    2005-04-16  199
> > 					   ib_mad_send_handler
> > send_handler, ^1da177e Linus Torvalds    2005-04-16  200
> > 					   ib_mad_recv_handler
> > recv_handler, 0f29b46d Ira Weiny         2014-08-08  201
> > 					   void *context, 0f29b46d
> > Ira Weiny         2014-08-08  202
> > 					   u32 registration_flags)
> > ^1da177e Linus Torvalds    2005-04-16  203  { ^1da177e Linus
> > Torvalds    2005-04-16  204  	struct ib_mad_port_private
> > *port_priv; ^1da177e Linus Torvalds    2005-04-16  205
> > struct ib_mad_agent *ret = ERR_PTR(-EINVAL); ^1da177e Linus
> > Torvalds    2005-04-16  206  	struct ib_mad_agent_private
> > *mad_agent_priv; ^1da177e Linus Torvalds    2005-04-16  207
> > struct ib_mad_reg_req *reg_req = NULL; ^1da177e Linus Torvalds
> > 2005-04-16  208  	struct ib_mad_mgmt_class_table *class;
> > ^1da177e Linus Torvalds    2005-04-16  209  	struct
> > ib_mad_mgmt_vendor_class_table *vendor; ^1da177e Linus Torvalds
> > 2005-04-16  210  	struct ib_mad_mgmt_vendor_class
> > *vendor_class; ^1da177e Linus Torvalds    2005-04-16  211
> > struct ib_mad_mgmt_method_table *method; ^1da177e Linus Torvalds
> > 2005-04-16  212  	int ret2, qpn; ^1da177e Linus Torvalds
> > 2005-04-16  213  	unsigned long flags; ^1da177e Linus
> > Torvalds    2005-04-16  214  	u8 mgmt_class, vclass; 74b1ba09
> > Hans Westgaard Ry 2018-06-07  215  	u32 ib_mad_client_id;
> > ^1da177e Linus Torvalds    2005-04-16  216  	/* Validate
> > parameters */ ^1da177e Linus Torvalds    2005-04-16  217  	qpn
> > = get_spl_qp_index(qp_type); 9ad13a42 Ira Weiny         2014-08-08
> > 218  	if (qpn == -1) { 9ad13a42 Ira Weiny         2014-08-08
> > 219  		dev_notice(&device->dev, 9ad13a42 Ira
> > Weiny         2014-08-08  220
> > "ib_register_mad_agent: invalid QP Type %d\n", 9ad13a42 Ira
> > Weiny         2014-08-08  221  			   qp_type);
> > ^1da177e Linus Torvalds    2005-04-16  222  		goto
> > error1; 9ad13a42 Ira Weiny         2014-08-08  223  	}
> > ^1da177e Linus Torvalds    2005-04-16  224 9ad13a42 Ira Weiny
> > 2014-08-08  225  	if (rmpp_version && rmpp_version !=
> > IB_MGMT_RMPP_VERSION) { 9ad13a42 Ira Weiny         2014-08-08  226
> > 		dev_notice(&device->dev, 9ad13a42 Ira Weiny
> > 2014-08-08  227  			   "ib_register_mad_agent:
> > invalid RMPP Version %u\n", 9ad13a42 Ira Weiny         2014-08-08
> > 228  			   rmpp_version); fa619a77 Hal
> > Rosenstock    2005-07-27  229  		goto error1; 9ad13a42
> > Ira Weiny         2014-08-08  230  	} ^1da177e Linus
> > Torvalds    2005-04-16  231 ^1da177e Linus Torvalds    2005-04-16
> > 232  	/* Validate MAD registration request if supplied */
> > ^1da177e Linus Torvalds    2005-04-16  233  	if (mad_reg_req)
> > { 9ad13a42 Ira Weiny         2014-08-08  234  		if
> > (mad_reg_req->mgmt_class_version >= MAX_MGMT_VERSION) { 9ad13a42 Ira
> > Weiny         2014-08-08  235
> > dev_notice(&device->dev, 9ad13a42 Ira Weiny         2014-08-08  236
> > 				   "ib_register_mad_agent: invalid
> > Class Version %u\n", 9ad13a42 Ira Weiny         2014-08-08  237
> > 				   mad_reg_req->mgmt_class_version);
> > ^1da177e Linus Torvalds    2005-04-16  238
> > goto error1; 9ad13a42 Ira Weiny         2014-08-08  239
> > 		} 9ad13a42 Ira Weiny         2014-08-08  240
> > 		if (!recv_handler) { 9ad13a42 Ira Weiny
> > 2014-08-08  241  			dev_notice(&device->dev,
> > 9ad13a42 Ira Weiny         2014-08-08  242
> > 				   "ib_register_mad_agent: no
> > recv_handler\n"); ^1da177e Linus Torvalds    2005-04-16  243
> > 			goto error1; 9ad13a42 Ira Weiny
> > 2014-08-08  244  		} ^1da177e Linus Torvalds
> > 2005-04-16  245  		if (mad_reg_req->mgmt_class >=
> > MAX_MGMT_CLASS) { ^1da177e Linus Torvalds    2005-04-16  246
> > 			/* ^1da177e Linus Torvalds    2005-04-16
> > 247  			 * IB_MGMT_CLASS_SUBN_DIRECTED_ROUTE is
> > the only ^1da177e Linus Torvalds    2005-04-16  248
> > 			 * one in this range currently allowed
> > ^1da177e Linus Torvalds    2005-04-16  249
> > */ ^1da177e Linus Torvalds    2005-04-16  250
> > 			if (mad_reg_req->mgmt_class != 9ad13a42 Ira
> > Weiny         2014-08-08  251
> > IB_MGMT_CLASS_SUBN_DIRECTED_ROUTE) { 9ad13a42 Ira Weiny
> > 2014-08-08  252
> > dev_notice(&device->dev, 9ad13a42 Ira Weiny         2014-08-08  253
> > 					   "ib_register_mad_agent:
> > Invalid Mgmt Class 0x%x\n", 9ad13a42 Ira Weiny         2014-08-08
> > 254
> > mad_reg_req->mgmt_class); ^1da177e Linus Torvalds    2005-04-16  255
> > 				goto error1; 9ad13a42 Ira
> > Weiny         2014-08-08  256  			} ^1da177e
> > Linus Torvalds    2005-04-16  257  		} else if
> > (mad_reg_req->mgmt_class == 0) { ^1da177e Linus Torvalds
> > 2005-04-16  258  			/* ^1da177e Linus
> > Torvalds    2005-04-16  259  			 * Class 0 is
> > reserved in IBA and is used for ^1da177e Linus Torvalds
> > 2005-04-16  260  			 * aliasing of
> > IB_MGMT_CLASS_SUBN_DIRECTED_ROUTE ^1da177e Linus Torvalds
> > 2005-04-16  261  			 */ 9ad13a42 Ira
> > Weiny         2014-08-08  262
> > dev_notice(&device->dev, 9ad13a42 Ira Weiny         2014-08-08  263
> > 				   "ib_register_mad_agent: Invalid
> > Mgmt Class 0\n"); ^1da177e Linus Torvalds    2005-04-16  264
> > 			goto error1; ^1da177e Linus Torvalds
> > 2005-04-16  265  		} else if
> > (is_vendor_class(mad_reg_req->mgmt_class)) { ^1da177e Linus
> > Torvalds    2005-04-16  266  			/* ^1da177e
> > Linus Torvalds    2005-04-16  267  			 * If
> > class is in "new" vendor range, ^1da177e Linus Torvalds
> > 2005-04-16  268  			 * ensure supplied OUI is
> > not zero ^1da177e Linus Torvalds    2005-04-16  269
> > 			 */ 9ad13a42 Ira Weiny         2014-08-08
> > 270  			if (!is_vendor_oui(mad_reg_req->oui))
> > { 9ad13a42 Ira Weiny         2014-08-08  271
> > 				dev_notice(&device->dev, 9ad13a42 Ira
> > Weiny         2014-08-08  272
> > 					   "ib_register_mad_agent: No
> > OUI specified for class 0x%x\n", 9ad13a42 Ira Weiny
> > 2014-08-08  273
> > mad_reg_req->mgmt_class); ^1da177e Linus Torvalds    2005-04-16  274
> > 				goto error1; ^1da177e Linus
> > Torvalds    2005-04-16  275  			} 9ad13a42 Ira
> > Weiny         2014-08-08  276  		} 618a3c03 Hal
> > Rosenstock    2006-03-28  277  		/* Make sure class
> > supplied is consistent with RMPP */ 64cb9c6a Hal Rosenstock
> > 2006-04-12  278  		if
> > (!ib_is_mad_class_rmpp(mad_reg_req->mgmt_class)) { 9ad13a42 Ira
> > Weiny         2014-08-08  279  			if
> > (rmpp_version) { 9ad13a42 Ira Weiny         2014-08-08  280
> > 				dev_notice(&device->dev, 9ad13a42 Ira
> > Weiny         2014-08-08  281
> > 					   "ib_register_mad_agent:
> > RMPP version for non-RMPP class 0x%x\n", 9ad13a42 Ira Weiny
> > 2014-08-08  282
> > mad_reg_req->mgmt_class); 618a3c03 Hal Rosenstock    2006-03-28  283
> > 				goto error1; 618a3c03 Hal
> > Rosenstock    2006-03-28  284  			} 9ad13a42 Ira
> > Weiny         2014-08-08  285  		} 1471cb6c Ira
> > Weiny         2014-08-08  286 ^1da177e Linus Torvalds    2005-04-16
> > 287  		/* Make sure class supplied is consistent with
> > QP type */ ^1da177e Linus Torvalds    2005-04-16  288
> > 		if (qp_type == IB_QPT_SMI) { ^1da177e Linus
> > Torvalds    2005-04-16  289  			if
> > ((mad_reg_req->mgmt_class != ^1da177e Linus Torvalds    2005-04-16
> > 290
> > IB_MGMT_CLASS_SUBN_LID_ROUTED) && ^1da177e Linus Torvalds
> > 2005-04-16  291
> > (mad_reg_req->mgmt_class != 9ad13a42 Ira Weiny         2014-08-08
> > 292
> > IB_MGMT_CLASS_SUBN_DIRECTED_ROUTE)) { 9ad13a42 Ira Weiny
> > 2014-08-08  293
> > dev_notice(&device->dev, 9ad13a42 Ira Weiny         2014-08-08  294
> > 					   "ib_register_mad_agent:
> > Invalid SM QP type: class 0x%x\n", 9ad13a42 Ira Weiny
> > 2014-08-08  295
> > mad_reg_req->mgmt_class); ^1da177e Linus Torvalds    2005-04-16  296
> > 				goto error1; 9ad13a42 Ira
> > Weiny         2014-08-08  297  			} ^1da177e
> > Linus Torvalds    2005-04-16  298  		} else { ^1da177e
> > Linus Torvalds    2005-04-16  299  			if
> > ((mad_reg_req->mgmt_class == ^1da177e Linus Torvalds    2005-04-16
> > 300
> > IB_MGMT_CLASS_SUBN_LID_ROUTED) || ^1da177e Linus Torvalds
> > 2005-04-16  301  			    (mad_reg_req->mgmt_class
> > == 9ad13a42 Ira Weiny         2014-08-08  302
> > 					IB_MGMT_CLASS_SUBN_DIRECTED_ROUTE))
> > { 9ad13a42 Ira Weiny         2014-08-08  303
> > 				dev_notice(&device->dev, 9ad13a42 Ira
> > Weiny         2014-08-08  304
> > 					   "ib_register_mad_agent:
> > Invalid GS QP type: class 0x%x\n", 9ad13a42 Ira Weiny
> > 2014-08-08  305
> > mad_reg_req->mgmt_class); ^1da177e Linus Torvalds    2005-04-16  306
> > 				goto error1; ^1da177e Linus
> > Torvalds    2005-04-16  307  			} 9ad13a42 Ira
> > Weiny         2014-08-08  308  		} ^1da177e Linus
> > Torvalds    2005-04-16  309  	} else { ^1da177e Linus
> > Torvalds    2005-04-16  310  		/* No registration
> > request supplied */ ^1da177e Linus Torvalds    2005-04-16  311
> > 		if (!send_handler) ^1da177e Linus Torvalds
> > 2005-04-16  312  			goto error1; 1471cb6c Ira
> > Weiny         2014-08-08  313  		if (registration_flags
> > & IB_MAD_USER_RMPP) 1471cb6c Ira Weiny         2014-08-08  314
> > 			goto error1; ^1da177e Linus Torvalds
> > 2005-04-16  315  	} ^1da177e Linus Torvalds    2005-04-16  316
> > ^1da177e Linus Torvalds    2005-04-16  317  	/* Validate
> > device and port */ ^1da177e Linus Torvalds    2005-04-16  318
> > 	port_priv = ib_get_mad_port(device, port_num); ^1da177e Linus
> > Torvalds    2005-04-16  319  	if (!port_priv) { f57e8ca5 Yuval
> > Shaia       2017-01-19  320  		dev_notice(&device->dev,
> > f57e8ca5 Yuval Shaia       2017-01-19  321
> > 			   "ib_register_mad_agent: Invalid port
> > %d\n", f57e8ca5 Yuval Shaia       2017-01-19  322
> > 			   port_num); ^1da177e Linus Torvalds
> > 2005-04-16  323  		ret = ERR_PTR(-ENODEV); ^1da177e
> > Linus Torvalds    2005-04-16  324  		goto error1;
> > ^1da177e Linus Torvalds    2005-04-16  325  	} ^1da177e Linus
> > Torvalds    2005-04-16  326 c8367c4c Ira Weiny         2011-05-19
> > 327  	/* Verify the QP requested is supported.  For example,
> > Ethernet devices c8367c4c Ira Weiny         2011-05-19  328
> > * will not have QP0 */ c8367c4c Ira Weiny         2011-05-19  329
> > 	if (!port_priv->qp_info[qpn].qp) { 9ad13a42 Ira Weiny
> > 2014-08-08  330  		dev_notice(&device->dev, 9ad13a42
> > Ira Weiny         2014-08-08  331
> > "ib_register_mad_agent: QP %d not supported\n", qpn); c8367c4c Ira
> > Weiny         2011-05-19  332  		ret =
> > ERR_PTR(-EPROTONOSUPPORT); c8367c4c Ira Weiny         2011-05-19
> > 333  		goto error1; c8367c4c Ira Weiny
> > 2011-05-19  334  	} c8367c4c Ira Weiny         2011-05-19  335
> > ^1da177e Linus Torvalds    2005-04-16  336  	/* Allocate
> > structures */ de6eb66b Roland Dreier     2005-11-02  337
> > mad_agent_priv = kzalloc(sizeof *mad_agent_priv, GFP_KERNEL);
> > ^1da177e Linus Torvalds    2005-04-16  338  	if
> > (!mad_agent_priv) { ^1da177e Linus Torvalds    2005-04-16  339
> > 		ret = ERR_PTR(-ENOMEM); ^1da177e Linus Torvalds
> > 2005-04-16  340  		goto error1; ^1da177e Linus
> > Torvalds    2005-04-16  341  	} b82cab6b Hal Rosenstock
> > 2005-07-27  342 ^1da177e Linus Torvalds    2005-04-16  343
> > if (mad_reg_req) { 9893e742 Julia Lawall      2010-05-15  344
> > 		reg_req = kmemdup(mad_reg_req, sizeof *reg_req,
> > GFP_KERNEL); ^1da177e Linus Torvalds    2005-04-16  345
> > 		if (!reg_req) { ^1da177e Linus Torvalds
> > 2005-04-16  346  			ret = ERR_PTR(-ENOMEM);
> > b82cab6b Hal Rosenstock    2005-07-27  347
> > goto error3; ^1da177e Linus Torvalds    2005-04-16  348
> > 		} ^1da177e Linus Torvalds    2005-04-16  349
> > 	} ^1da177e Linus Torvalds    2005-04-16  350 ^1da177e Linus
> > Torvalds    2005-04-16  351  	/* Now, fill in the various
> > structures */ ^1da177e Linus Torvalds    2005-04-16  352
> > mad_agent_priv->qp_info = &port_priv->qp_info[qpn]; ^1da177e Linus
> > Torvalds    2005-04-16  353  	mad_agent_priv->reg_req =
> > reg_req; fa619a77 Hal Rosenstock    2005-07-27  354
> > mad_agent_priv->agent.rmpp_version = rmpp_version; ^1da177e Linus
> > Torvalds    2005-04-16  355  	mad_agent_priv->agent.device =
> > device; ^1da177e Linus Torvalds    2005-04-16  356
> > mad_agent_priv->agent.recv_handler = recv_handler; ^1da177e Linus
> > Torvalds    2005-04-16  357
> > mad_agent_priv->agent.send_handler = send_handler; ^1da177e Linus
> > Torvalds    2005-04-16  358  	mad_agent_priv->agent.context =
> > context; ^1da177e Linus Torvalds    2005-04-16  359
> > mad_agent_priv->agent.qp = port_priv->qp_info[qpn].qp; ^1da177e Linus
> > Torvalds    2005-04-16  360  	mad_agent_priv->agent.port_num =
> > port_num; 0f29b46d Ira Weiny         2014-08-08  361
> > mad_agent_priv->agent.flags = registration_flags; d9620a4c Ralph
> > Campbell    2009-02-27  362
> > spin_lock_init(&mad_agent_priv->lock); d9620a4c Ralph Campbell
> > 2009-02-27  363  	INIT_LIST_HEAD(&mad_agent_priv->send_list);
> > d9620a4c Ralph Campbell    2009-02-27  364
> > INIT_LIST_HEAD(&mad_agent_priv->wait_list); d9620a4c Ralph
> > Campbell    2009-02-27  365
> > INIT_LIST_HEAD(&mad_agent_priv->done_list); d9620a4c Ralph
> > Campbell    2009-02-27  366
> > INIT_LIST_HEAD(&mad_agent_priv->rmpp_list); d9620a4c Ralph
> > Campbell    2009-02-27  367
> > INIT_DELAYED_WORK(&mad_agent_priv->timed_work, timeout_sends);
> > d9620a4c Ralph Campbell    2009-02-27  368
> > INIT_LIST_HEAD(&mad_agent_priv->local_list); d9620a4c Ralph
> > Campbell    2009-02-27  369
> > INIT_WORK(&mad_agent_priv->local_work, local_completions); d9620a4c
> > Ralph Campbell    2009-02-27  370
> > atomic_set(&mad_agent_priv->refcount, 1); d9620a4c Ralph Campbell
> > 2009-02-27  371  	init_completion(&mad_agent_priv->comp);
> > ^1da177e Linus Torvalds    2005-04-16  372 47a2b338 Daniel Jurgens
> > 2017-05-19  373  	ret2 =
> > ib_mad_agent_security_setup(&mad_agent_priv->agent, qp_type);
> > 47a2b338 Daniel Jurgens    2017-05-19  374  	if (ret2)
> > { 47a2b338 Daniel Jurgens    2017-05-19  375  		ret =
> > ERR_PTR(ret2); 47a2b338 Daniel Jurgens    2017-05-19  376
> > 		goto error4; 47a2b338 Daniel Jurgens    2017-05-19
> > 377  	} 74b1ba09 Hans Westgaard Ry 2018-06-07  378
> > ib_mad_client_id = ida_simple_get_cyclic(&ib_mad_client_ids, 74b1ba09
> > Hans Westgaard Ry 2018-06-07  379
> > 						1, 74b1ba09 Hans
> > Westgaard Ry 2018-06-07  380
> > 						BIT(24) - 1, 74b1ba09
> > Hans Westgaard Ry 2018-06-07  381
> > 						GFP_KERNEL); 74b1ba09
> > Hans Westgaard Ry 2018-06-07 @382  	if (ib_mad_client_id < 0)
> > { 74b1ba09 Hans Westgaard Ry 2018-06-07  383
> > pr_err("Couldn't allocate agent tid; errcode: %#x\n", 74b1ba09 Hans
> > Westgaard Ry 2018-06-07  384
> > ib_mad_client_id); 74b1ba09 Hans Westgaard Ry 2018-06-07  385
> > 		ret = ERR_PTR(ib_mad_client_id); 74b1ba09 Hans
> > Westgaard Ry 2018-06-07  386  		goto error4; 74b1ba09
> > Hans Westgaard Ry 2018-06-07  387  	} 74b1ba09 Hans Westgaard
> > Ry 2018-06-07  388  	mad_agent_priv->agent.hi_tid =
> > ib_mad_client_id; 47a2b338 Daniel Jurgens    2017-05-19  389 ^1da177e
> > Linus Torvalds    2005-04-16  390
> > spin_lock_irqsave(&port_priv->reg_lock, flags); ^1da177e Linus
> > Torvalds    2005-04-16  391 ^1da177e Linus Torvalds    2005-04-16
> > 392  	/* ^1da177e Linus Torvalds    2005-04-16  393
> > * Make sure MAD registration (if supplied) ^1da177e Linus Torvalds
> > 2005-04-16  394  	 * is non overlapping with any existing ones
> > ^1da177e Linus Torvalds    2005-04-16  395  	 */ ^1da177e
> > Linus Torvalds    2005-04-16  396  	if (mad_reg_req)
> > { ^1da177e Linus Torvalds    2005-04-16  397
> > mgmt_class = convert_mgmt_class(mad_reg_req->mgmt_class); ^1da177e
> > Linus Torvalds    2005-04-16  398  		if
> > (!is_vendor_class(mgmt_class)) { ^1da177e Linus Torvalds
> > 2005-04-16  399  			class =
> > port_priv->version[mad_reg_req-> ^1da177e Linus Torvalds
> > 2005-04-16  400
> > mgmt_class_version].class; ^1da177e Linus Torvalds    2005-04-16
> > 401  			if (class) { ^1da177e Linus Torvalds
> > 2005-04-16  402  				method =
> > class->method_table[mgmt_class]; ^1da177e Linus Torvalds
> > 2005-04-16  403  				if (method)
> > { ^1da177e Linus Torvalds    2005-04-16  404
> > 					if (method_in_use(&method,
> > ^1da177e Linus Torvalds    2005-04-16  405
> > 							   mad_reg_req))
> > 47a2b338 Daniel Jurgens    2017-05-19  406
> > 						goto error5; ^1da177e
> > Linus Torvalds    2005-04-16  407  				}
> > ^1da177e Linus Torvalds    2005-04-16  408  			}
> > ^1da177e Linus Torvalds    2005-04-16  409
> > ret2 = add_nonoui_reg_req(mad_reg_req, mad_agent_priv, ^1da177e Linus
> > Torvalds    2005-04-16  410
> > 						  mgmt_class);
> > ^1da177e Linus Torvalds    2005-04-16  411  		} else
> > { ^1da177e Linus Torvalds    2005-04-16  412
> > 			/* "New" vendor class range */ ^1da177e Linus
> > Torvalds    2005-04-16  413  			vendor =
> > port_priv->version[mad_reg_req-> ^1da177e Linus Torvalds
> > 2005-04-16  414
> > mgmt_class_version].vendor; ^1da177e Linus Torvalds    2005-04-16
> > 415  			if (vendor) { ^1da177e Linus Torvalds
> > 2005-04-16  416  				vclass =
> > vendor_class_index(mgmt_class); ^1da177e Linus Torvalds
> > 2005-04-16  417  				vendor_class =
> > vendor->vendor_class[vclass]; ^1da177e Linus Torvalds    2005-04-16
> > 418  				if (vendor_class) { ^1da177e
> > Linus Torvalds    2005-04-16  419
> > 					if
> > (is_vendor_method_in_use( ^1da177e Linus Torvalds    2005-04-16  420
> > 							vendor_class,
> > ^1da177e Linus Torvalds    2005-04-16  421
> > 							mad_reg_req))
> > 47a2b338 Daniel Jurgens    2017-05-19  422
> > 						goto error5; ^1da177e
> > Linus Torvalds    2005-04-16  423  				}
> > ^1da177e Linus Torvalds    2005-04-16  424  			}
> > ^1da177e Linus Torvalds    2005-04-16  425
> > ret2 = add_oui_reg_req(mad_reg_req, mad_agent_priv); ^1da177e Linus
> > Torvalds    2005-04-16  426  		} ^1da177e Linus
> > Torvalds    2005-04-16  427  		if (ret2) { ^1da177e
> > Linus Torvalds    2005-04-16  428  			ret =
> > ERR_PTR(ret2); 47a2b338 Daniel Jurgens    2017-05-19  429
> > 			goto error5; ^1da177e Linus Torvalds
> > 2005-04-16  430  		} ^1da177e Linus Torvalds
> > 2005-04-16  431  	} ^1da177e Linus Torvalds    2005-04-16  432
> > ^1da177e Linus Torvalds    2005-04-16  433  	/* Add mad agent
> > into port's agent list */ ^1da177e Linus Torvalds    2005-04-16  434
> > 	list_add_tail(&mad_agent_priv->agent_list,
> > &port_priv->agent_list); ^1da177e Linus Torvalds    2005-04-16  435
> > 	spin_unlock_irqrestore(&port_priv->reg_lock, flags); ^1da177e
> > Linus Torvalds    2005-04-16  436 ^1da177e Linus Torvalds
> > 2005-04-16  437  	return &mad_agent_priv->agent; 47a2b338
> > Daniel Jurgens    2017-05-19  438  error5: ^1da177e Linus Torvalds
> > 2005-04-16  439  	spin_unlock_irqrestore(&port_priv->reg_lock,
> > flags); 47a2b338 Daniel Jurgens    2017-05-19  440
> > ib_mad_agent_security_cleanup(&mad_agent_priv->agent); 74b1ba09 Hans
> > Westgaard Ry 2018-06-07  441
> > ida_simple_remove(&ib_mad_client_ids, ib_mad_client_id); 74b1ba09
> > Hans Westgaard Ry 2018-06-07  442 47a2b338 Daniel Jurgens
> > 2017-05-19  443  error4: ^1da177e Linus Torvalds    2005-04-16  444
> > 	kfree(reg_req); b82cab6b Hal Rosenstock    2005-07-27  445
> > error3: 2012a116 Adrian Bunk       2005-11-27  446
> > kfree(mad_agent_priv); ^1da177e Linus Torvalds    2005-04-16  447
> > error1: ^1da177e Linus Torvalds    2005-04-16  448  	return
> > ret; ^1da177e Linus Torvalds    2005-04-16  449  } ^1da177e Linus
> > Torvalds    2005-04-16  450  EXPORT_SYMBOL(ib_register_mad_agent);
> > ^1da177e Linus Torvalds    2005-04-16  451
> >
> > ---
> > 0-DAY kernel test infrastructure                Open Source
> > Technology Center
> > https://lists.01.org/pipermail/kbuild-all                   Intel
> > Corporation
>
>

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2018-06-17  6:42 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-06-16 16:04 [PATCH v3 2/2] IB/mad: Use ID allocator routines to allocate agent number (fwd) Julia Lawall
2018-06-17  6:35 ` jackm
2018-06-17  6:42   ` Julia Lawall

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox