From patchwork Mon Aug 25 00:32:35 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mark Brown X-Patchwork-Id: 382678 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3660A1400B2 for ; Mon, 25 Aug 2014 20:02:17 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755077AbaHYKCM (ORCPT ); Mon, 25 Aug 2014 06:02:12 -0400 Received: from mezzanine.sirena.org.uk ([106.187.55.193]:60184 "EHLO mezzanine.sirena.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753344AbaHYKCL (ORCPT ); Mon, 25 Aug 2014 06:02:11 -0400 Received: from cpc11-sgyl31-2-0-cust672.sgyl.cable.virginm.net ([94.175.94.161] helo=finisterre) by mezzanine.sirena.org.uk with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from ) id 1XLr69-0005AM-CS; Mon, 25 Aug 2014 10:02:05 +0000 Received: from broonie by finisterre with local (Exim 4.84_RC1) (envelope-from ) id 1XLiD7-0003Ce-0G; Sun, 24 Aug 2014 19:32:37 -0500 From: Mark Brown To: Chien Yen , "David S. Miller" Cc: rds-devel@oss.oracle.com, netdev@vger.kernel.org, linaro-kernel@lists.linaro.org, Mark Brown Date: Sun, 24 Aug 2014 19:32:35 -0500 Message-Id: <1408926755-12277-1-git-send-email-broonie@kernel.org> X-Mailer: git-send-email 2.1.0.rc1 X-SA-Exim-Connect-IP: 94.175.94.161 X-SA-Exim-Mail-From: broonie@sirena.org.uk X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on mezzanine.sirena.org.uk X-Spam-Level: X-Spam-Status: No, score=-2.9 required=5.0 tests=ALL_TRUSTED,BAYES_00 autolearn=ham version=3.3.2 Subject: [PATCH] net: rds: Don't allocate rds_sock on stack X-SA-Exim-Version: 4.2.1 (built Mon, 26 Dec 2011 16:24:06 +0000) X-SA-Exim-Scanned: Yes (on mezzanine.sirena.org.uk) Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Mark Brown struct rds_sock is rather large ausing the following warning in an ARM allmodconfig: net/rds/iw_rdma.c:200:1: warning: the frame size of 1056 bytes is larger than 1024 bytes [-Wframe-larger-than=] Fix this by dynamically allocating struct rds_sock in rds_iw_update_cm_id instead of allocating it on the stack. Signed-off-by: Mark Brown Acked-by: Arnd Bergmann --- net/rds/iw_rdma.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/net/rds/iw_rdma.c b/net/rds/iw_rdma.c index a817705..cee5daa 100644 --- a/net/rds/iw_rdma.c +++ b/net/rds/iw_rdma.c @@ -180,22 +180,28 @@ int rds_iw_update_cm_id(struct rds_iw_device *rds_iwdev, struct rdma_cm_id *cm_i { struct sockaddr_in *src_addr, *dst_addr; struct rds_iw_device *rds_iwdev_old; - struct rds_sock rs; + struct rds_sock *rs; struct rdma_cm_id *pcm_id; int rc; + rs = kzalloc(sizeof(*rs), GFP_KERNEL); + if (!rs) + return -ENOMEM; + src_addr = (struct sockaddr_in *)&cm_id->route.addr.src_addr; dst_addr = (struct sockaddr_in *)&cm_id->route.addr.dst_addr; - rs.rs_bound_addr = src_addr->sin_addr.s_addr; - rs.rs_bound_port = src_addr->sin_port; - rs.rs_conn_addr = dst_addr->sin_addr.s_addr; - rs.rs_conn_port = dst_addr->sin_port; + rs->rs_bound_addr = src_addr->sin_addr.s_addr; + rs->rs_bound_port = src_addr->sin_port; + rs->rs_conn_addr = dst_addr->sin_addr.s_addr; + rs->rs_conn_port = dst_addr->sin_port; - rc = rds_iw_get_device(&rs, &rds_iwdev_old, &pcm_id); + rc = rds_iw_get_device(rs, &rds_iwdev_old, &pcm_id); if (rc) rds_iw_remove_cm_id(rds_iwdev, cm_id); + kfree(rs); + return rds_iw_add_cm_id(rds_iwdev, cm_id); }