Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp3035748imu; Sun, 9 Dec 2018 15:41:50 -0800 (PST) X-Google-Smtp-Source: AFSGD/X+4CUwXWkFHvgoo1ejYyCm4PxSlSN6qFrWsuCA4UINreXFmnQUI5eU3Ih/HWR4F/QfBDHf X-Received: by 2002:a65:4ccb:: with SMTP id n11mr9186945pgt.257.1544398910783; Sun, 09 Dec 2018 15:41:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1544398910; cv=none; d=google.com; s=arc-20160816; b=BtUIpKazI6pjeFtD1TmgOljjdSzywh7vRz3y2vLZ33ZWEhZyb4stlfMkSUaAfYjfP0 dcRfHMt1ObHdQPbnWPqYadf+tg5DEVCafjs1UDRGIv5Ch9oJnPu4w/vnZwMLO47DjD2Y y3+DI1OGDCYIS0ro2yidXcADLzli3e0Pl2nAWZ1FDgGIjVbBfECZ15z4TB5TWmf9Jxzg Kn4TFvT6DLeELECRx/CIVI6mDkmAIleG9+Ukz0xbeG9ICftNWK4QFdS4cp+J/Tx7jcec ygAm0VtfDys/Feu9Y2SyUhVgBx7/D6O7ro9qx2XBuMXDlE1LmDkkp+lX7ey7jmV3JqzY 1AyA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:in-reply-to:subject:message-id:date:cc:to :from:mime-version:content-transfer-encoding:content-disposition; bh=EetxQk8wsGPjFBdONYC6vtrCvNQWBcUUl38Z35eY0ug=; b=gsl2KNC8tyBPwXaUalFfUFglSMhypASUAhf+t9XMFrg+jBuy/1dU791LDeLkzNZJZ0 i10QajLUa1yFFU2TZYjeGCjRxmT8N1mp7ZkMWTNblJZvtu+kBYkMhzEzHb0ayESq2BhZ 4Pp1VMKW0m5TiSkRTvAxXPqPCWj7r8ZLIBFcIyDeT7VRnOYjvfYgGYCLPbbooP1Qio45 qkm7ZmM+CGD5HdQcpp0hbxbTHhHTEWs/4k9PowvSP2uaMazuozKSxoyB5EfAKJNRORIb Lmc4Lud4TbzVeWCSKayADzEiPFqFfddb6zOOys+w4LNn5o3//Vk0S7G29lA7HdR/b03z P20w== 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 f14si9356389pln.289.2018.12.09.15.41.35; Sun, 09 Dec 2018 15:41:50 -0800 (PST) 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 S1728016AbeLIW10 (ORCPT + 99 others); Sun, 9 Dec 2018 17:27:26 -0500 Received: from shadbolt.e.decadent.org.uk ([88.96.1.126]:34676 "EHLO shadbolt.e.decadent.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726386AbeLIVzM (ORCPT ); Sun, 9 Dec 2018 16:55:12 -0500 Received: from pub.yeoldevic.com ([81.174.156.145] helo=deadeye) by shadbolt.decadent.org.uk with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1gW72Y-0002im-QP; Sun, 09 Dec 2018 21:55:06 +0000 Received: from ben by deadeye with local (Exim 4.91) (envelope-from ) id 1gW72Y-0003DD-6I; Sun, 09 Dec 2018 21:55:06 +0000 Content-Type: text/plain; charset="UTF-8" Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 From: Ben Hutchings To: linux-kernel@vger.kernel.org, stable@vger.kernel.org CC: akpm@linux-foundation.org, "Steve Wise" , "Christoph Hellwig" , "Jason Gunthorpe" , "Bart Van Assche" Date: Sun, 09 Dec 2018 21:50:33 +0000 Message-ID: X-Mailer: LinuxStableQueue (scripts by bwh) X-Patchwork-Hint: ignore Subject: [PATCH 3.16 014/328] IB/srpt: Support HCAs with more than two ports In-Reply-To: X-SA-Exim-Connect-IP: 81.174.156.145 X-SA-Exim-Mail-From: ben@decadent.org.uk X-SA-Exim-Scanned: No (on shadbolt.decadent.org.uk); SAEximRunCond expanded to false Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 3.16.62-rc1 review patch. If anyone has any objections, please let me know. ------------------ From: Bart Van Assche commit e620ebfc228dcbef7519e3d16f43c6c6f1a1d0cb upstream. Since there are adapters that have four ports, increase the size of the srpt_device.port[] array. This patch avoids that the following warning is hit with quad port Chelsio adapters: WARN_ON(sdev->device->phys_port_cnt > ARRAY_SIZE(sdev->port)); Reported-by: Steve Wise Signed-off-by: Bart Van Assche Cc: Steve Wise Cc: Christoph Hellwig Reviewed-by: Steve Wise Signed-off-by: Jason Gunthorpe [bwh: Backported to 3.16: - Use inline calculation instead of struct_size; the number of ports is not user-controlled so no overflow check is needed - Adjust context] Signed-off-by: Ben Hutchings --- --- a/drivers/infiniband/ulp/srpt/ib_srpt.c +++ b/drivers/infiniband/ulp/srpt/ib_srpt.c @@ -3147,7 +3147,9 @@ static void srpt_add_one(struct ib_devic pr_debug("device = %p, device->dma_ops = %p\n", device, device->dma_ops); - sdev = kzalloc(sizeof *sdev, GFP_KERNEL); + sdev = kzalloc(sizeof(*sdev) + + device->phys_port_cnt * sizeof(*sdev->port), + GFP_KERNEL); if (!sdev) goto err; @@ -3220,8 +3222,6 @@ static void srpt_add_one(struct ib_devic for (i = 0; i < sdev->srq_size; ++i) srpt_post_recv(sdev, sdev->ioctx_ring[i]); - WARN_ON(sdev->device->phys_port_cnt > ARRAY_SIZE(sdev->port)); - for (i = 1; i <= sdev->device->phys_port_cnt; i++) { sport = &sdev->port[i - 1]; sport->sdev = sdev; --- a/drivers/infiniband/ulp/srpt/ib_srpt.h +++ b/drivers/infiniband/ulp/srpt/ib_srpt.h @@ -387,9 +387,9 @@ struct srpt_port { * @rch_list: Per-device channel list -- see also srpt_rdma_ch.list. * @ch_releaseQ: Enables waiting for removal from rch_list. * @spinlock: Protects rch_list and tpg. - * @port: Information about the ports owned by this HCA. * @event_handler: Per-HCA asynchronous IB event handler. * @list: Node in srpt_dev_list. + * @port: Information about the ports owned by this HCA. */ struct srpt_device { struct ib_device *device; @@ -403,9 +403,9 @@ struct srpt_device { struct list_head rch_list; wait_queue_head_t ch_releaseQ; spinlock_t spinlock; - struct srpt_port port[2]; struct ib_event_handler event_handler; struct list_head list; + struct srpt_port port[]; }; /**