Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp2074223imm; Sat, 16 Jun 2018 09:05:25 -0700 (PDT) X-Google-Smtp-Source: ADUXVKJr0mZn4T5qjW9VHObIhL+TPRFfccOLW+xmYmDc+q8OjXZgvuDq3pybF5/TuwP+vY+U83uc X-Received: by 2002:a62:e03:: with SMTP id w3-v6mr6790806pfi.173.1529165125278; Sat, 16 Jun 2018 09:05:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1529165125; cv=none; d=google.com; s=arc-20160816; b=qmfWn8fWi7LEoJPis54c9NiwTYD/1zpUHCEUPvzD46R0U9vYabD68BntoMAAr6SQe2 V9EHj7tpUUS2o1JpPCkKJioFENf9TTWtbEs9R0blsIcj/GKNjYTIv+WHpIsKG6k+NhLO 5rgWq3KN+yTnVne1rz+kU4TwVIRi77DjUPnioqLkWYndkRgH4zQnoPpu3awpI645OiXO SFyZ784dvuXhJhMSXLfJipixHz7yHvSn2nbdh+5sQ3+yuMZ510kTsnmTx8ntyq53v1+D L2jgiX72xYaw4SttGxgZna9nbT438I6P0CNwbrCVIWdlgHUtPLN6/ptvnvfDEKfxP5ze duRQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:message-id :subject:cc:to:from:date:arc-authentication-results; bh=6FlsnDw1GNsnl0jTAX4V4vqYmjj6BF6rle9aa94DG+I=; b=oZC+0fxJhUh6u2Q/GwVYCefDl1J6txt9Q1UTjaRRokbo+bh8wsFhG0fu11qiEQKuON cc5WOjTz9g1LtwrKi6+7yjSBALz+JbGxILWMDo2K0pN4cfi2zQmrv6RNgyWiGyJw2S6q B3xFzGxClxx2HgZZs2RHPO/NTRu83NxJwJz1loVL3VpqHBbSCGkDforTOLs1xPlX0WHp kBmSJZYX1VxyMrpJoAclGP9bufyqPJaZ2HhHSFtc9B6Vpx4QskPIkJmAdpGXYLTdxm6P japJ5qhtEXZa9FqKOsPlCFjmCcRy8ZBbGSr+Z3xdCa/ydC6xAMwI0gZM4+rhL1cAQ10C DVlg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id x2-v6si10599147plv.388.2018.06.16.09.05.10; Sat, 16 Jun 2018 09:05:25 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756898AbeFPQEq (ORCPT + 99 others); Sat, 16 Jun 2018 12:04:46 -0400 Received: from mail2-relais-roc.national.inria.fr ([192.134.164.83]:40725 "EHLO mail2-relais-roc.national.inria.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752631AbeFPQEo (ORCPT ); Sat, 16 Jun 2018 12:04:44 -0400 X-IronPort-AV: E=Sophos;i="5.51,231,1526335200"; d="scan'208";a="332075626" Received: from abo-154-110-68.mrs.modulonet.fr (HELO [192.168.0.15]) ([85.68.110.154]) by mail2-relais-roc.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 16 Jun 2018 18:04:41 +0200 Date: Sat, 16 Jun 2018 18:04:41 +0200 (CEST) From: Julia Lawall X-X-Sender: jll@hadrien 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@vger.kernel.org, linux-kernel@vger.kernel.org, kbuild-all@01.org Subject: Re: [PATCH v3 2/2] IB/mad: Use ID allocator routines to allocate agent number (fwd) Message-ID: User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 To: kbuild@01.org Cc: Julia Lawall 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