From nobody Mon May 25 04:33:50 2026 Received: from mail-pj1-f45.google.com (mail-pj1-f45.google.com [209.85.216.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7276A18C933 for ; Tue, 19 May 2026 00:52:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779151946; cv=none; b=kdMA2kveYNjYhNZpLGYsskrntYJ1brgsx98ks7KLLX10lmsa73ZuKl4ajBhyN+WmgsU5Go2ytth1/VHIN05XCPe6zQLAH33FWI25EcyCqjDe1YPYRrzOXSBEG5CccJ07y3C9flrZwCFl4uXy6h8yOTjPbCjA0AmhHdWCQqeyjxU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779151946; c=relaxed/simple; bh=8WR9rCQI8pYKIwDYraHrHjYIExw2j9LSvcpKQg2e6KU=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=ZD6LmwU5cdzdTAReo5goSYjUufZqgHcHauhDzrH6io76JO4wbr8olxigf7i4Ml6J5SlqdzSXKsXwO5FbCFqO3EnPcblmdwd7DbZ6CRtiXgldKGQy45ib0YElXGd2wfQY+gaS4XK8HJ+xYz+elCJCGGXkadmdbKmrQIfShTFUv0g= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=eD57G5qW; arc=none smtp.client-ip=209.85.216.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="eD57G5qW" Received: by mail-pj1-f45.google.com with SMTP id 98e67ed59e1d1-3660ab73adbso2015700a91.1 for ; Mon, 18 May 2026 17:52:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779151945; x=1779756745; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=/pD9nTHCsUwMY/2ZvH2eEJmq55Tr5vZPtGAv1sHO/wQ=; b=eD57G5qWHjI7bto21FBFhIad4ZzZQBRThwy/3k8aRkIBtsZGdOpjX8+deCRRMakq3t CQ6RrRBoqidAaCx+ztHMCtPAbyLdqD1aYxH+sK/sPI0r+SNoxaJwvL11bigxnPKIZ3l4 4pQMa4353Z8JzTgQg57oeUZ4EXgc3VWXfoMUlOlVYXKKNkngMQxsqWKPCjalD3z8DKn7 9mJyyjAvsr+yK+muWQf6m6SRAdQGgp8XG42pgpfEGNXRsxDarlQunEVKgi+XMQB+VF0+ dEW7Sg2Dy/6gm7EVQtNWRvxuoFNd1cxmJXBjTItyfDi+5VwXmAvPr7wG/skQLyGWszaY elWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779151945; x=1779756745; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=/pD9nTHCsUwMY/2ZvH2eEJmq55Tr5vZPtGAv1sHO/wQ=; b=bU7Cp+QTlMU7fcJQnlgfC7KC4mBPDcT6iKqSAptacqoAQqH5qA1M9IFu5k1sUxHrjv H03roF0ulTR89X4cZglWKSN5Ej4QBMrUvwPR6vdl1OfX5RROhrbJezZxIoOHLjFiK07e ydl18sMqucxD39+f4ICJj9u6bK4I2b8BrUqcMJN3mF8JQhQQskmUJ6ZsOTkdwS3XMfli CYqiBQ7ZiTPlqcpj5ji+yDPRHQldi+eAKGrpPtWGRpC4qirTUMuycEw3C3oVskPanqbP 2DYKs81axTHqN/1XK85jH9khNb0RqL7V/PT7hOQIXBKOO5iu57sXNg4BMThR57OYTIKG 0s/A== X-Forwarded-Encrypted: i=1; AFNElJ81ZNGkECb/HE3g51Ba5vTRt7meJvmmWeQag86vRk8XUZL4/lwjnm5RyW+qoEa7q63T/SoxWV18l93Tr5c=@vger.kernel.org X-Gm-Message-State: AOJu0YxmtO2HaLT5unbQNEgyTzo8PywqmOL52ReSb9mRjbCsjlUaPliP SItxUnO5/BboUlJ4Oe9uNbjvKfWQRCV50P38SKRaZOqv8/mj/8DAwmP1 X-Gm-Gg: Acq92OGd8gXpQvNwMHYsYBK0ojGlDWC+R1nI5jgK7orA7NEk1uSQBJBj6aMnPbaCzCH mBBn5oDQ3FCYbMPLBRBMI9xTlnrmzrVJNac0ffU8vtVDalXYvl6o0MdVuWOuxQi7Wbt72lFBKE2 zgvxqnXS5USxUJG+6Ah3T98stEll+WL0GsfwgMSn3QKtSQYQERkIaldWq2/vY0c9X9ybGGJGCRf Qx+bHX7Yf1Jojjwq5uyPmIHwxLli8A+TOzKDNRf//m4SS0Zlktto9adlzT/cqqgDTfKT6CJV6me idBMswO/mpXAqvxl1Ghmw9VI3m+4TXIg6LNNegWbpC6DEPREVRiaYKxOl1+D8RWVVD1Y6iEYcFX eQGF5LTczAbs816EKxMCkN0kr0nFykfZTV6FUONABoId2OGjROofhi3n5yJvxn6ZCSmdLmeVo0S eBKUP0f6r0e5fZNSwJWu9PbnNa5eB46KUmahIsPOQK8Q+AY1CiaqV46fOBFdNVANiN+5XNbub8H 3Jk5qKDpdksZK++R3hdtn3di6777gtVXDQ= X-Received: by 2002:a17:90a:c10e:b0:368:977e:2bf8 with SMTP id 98e67ed59e1d1-36923603c63mr18107714a91.10.1779151944807; Mon, 18 May 2026 17:52:24 -0700 (PDT) Received: from ryzen ([2601:644:8000:5b5d:7285:c2ff:fe45:8a32]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2bdc4c2cda4sm74177405ad.58.2026.05.18.17.52.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 May 2026 17:52:23 -0700 (PDT) From: Rosen Penev To: linux-rdma@vger.kernel.org Cc: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , "D. Wythe" , Dust Li , Sidraya Jayagond , Wenjia Zhang , Mahanta Jambigi , Tony Lu , Wen Gu , netdev@vger.kernel.org (open list:NETWORKING [GENERAL]), linux-kernel@vger.kernel.org (open list), linux-s390@vger.kernel.org (open list:SHARED MEMORY COMMUNICATIONS (SMC) SOCKETS) Subject: [PATCH] smc: Use flexible array for SMCD connections Date: Mon, 18 May 2026 17:52:06 -0700 Message-ID: <20260519005206.628071-1-rosenp@gmail.com> X-Mailer: git-send-email 2.54.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Store the per-DMB connection pointers in the SMCD device allocation instead of allocating a separate connection array. This keeps the connection table tied to the SMCD device lifetime and simplifies the allocation and cleanup paths. Assisted-by: Codex:GPT-5.5 Signed-off-by: Rosen Penev Reviewed-by: Sidraya Jayagond --- include/net/smc.h | 2 +- net/smc/smc_ism.c | 10 ++-------- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/include/net/smc.h b/include/net/smc.h index bfdc4c41f019..a2bc3ab88075 100644 --- a/include/net/smc.h +++ b/include/net/smc.h @@ -40,7 +40,6 @@ struct smcd_dev { struct dibs_dev *dibs; struct list_head list; spinlock_t lock; - struct smc_connection **conn; struct list_head vlan; struct workqueue_struct *event_wq; u8 pnetid[SMC_MAX_PNETID_LEN]; @@ -50,6 +49,7 @@ struct smcd_dev { atomic_t lgr_cnt; wait_queue_head_t lgrs_deleted; u8 going_away : 1; + struct smc_connection *conn[]; }; =20 #define SMC_HS_CTRL_NAME_MAX 16 diff --git a/net/smc/smc_ism.c b/net/smc/smc_ism.c index e0dba2c7b6e3..bde938c5eb39 100644 --- a/net/smc/smc_ism.c +++ b/net/smc/smc_ism.c @@ -467,17 +467,14 @@ static struct smcd_dev *smcd_alloc_dev(const char *na= me, int max_dmbs) { struct smcd_dev *smcd; =20 - smcd =3D kzalloc_obj(*smcd); + smcd =3D kzalloc_flex(*smcd, conn, max_dmbs); if (!smcd) return NULL; - smcd->conn =3D kzalloc_objs(struct smc_connection *, max_dmbs); - if (!smcd->conn) - goto free_smcd; =20 smcd->event_wq =3D alloc_ordered_workqueue("ism_evt_wq-%s)", WQ_MEM_RECLAIM, name); if (!smcd->event_wq) - goto free_conn; + goto free_smcd; =20 spin_lock_init(&smcd->lock); spin_lock_init(&smcd->lgr_lock); @@ -486,8 +483,6 @@ static struct smcd_dev *smcd_alloc_dev(const char *name= , int max_dmbs) init_waitqueue_head(&smcd->lgrs_deleted); return smcd; =20 -free_conn: - kfree(smcd->conn); free_smcd: kfree(smcd); return NULL; @@ -557,7 +552,6 @@ static void smcd_unregister_dev(struct dibs_dev *dibs) list_del_init(&smcd->list); mutex_unlock(&smcd_dev_list.mutex); destroy_workqueue(smcd->event_wq); - kfree(smcd->conn); kfree(smcd); } =20 --=20 2.54.0