Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp1536680yba; Fri, 17 May 2019 00:30:29 -0700 (PDT) X-Google-Smtp-Source: APXvYqxM2TmwLGH9UHV5D5IMqRKm3UTNEZnZ3A6Js519hEbwRm2ouzggYjMGDWWCl3qTqMU8kbwB X-Received: by 2002:a65:5941:: with SMTP id g1mr55390722pgu.51.1558078229303; Fri, 17 May 2019 00:30:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1558078229; cv=none; d=google.com; s=arc-20160816; b=XhonCsIgCw73WD1u9+X+HUo+rAYk4bbZimfRtir9+ezGhUdQqLue5Q4bj35CKAImYg 5Fc9uNs8YMHslSoR9j5shvISXRoyslUEBilzYUfDTL3QU07TOiCGnaLxHi1d2iHsRHK3 27y0y+2JeHRVy9yFEQTgHIfNpAUm/dervZksTQh5aAtSPZoVINA5iu2vLsxLdgLnKU5X smw6FJM+QdbrsMrv9IA0f5Rp0Y/RC6CKiJAmmDEQoFBynqNJJ6sBtVBAbkw3lmr5dIsQ TeYbNTC9IdLEfOfCu2ydR+k0QHGvHAd+TgV4cBCs/2R2VCfYSk/fSLZXR+l1dE56dpae mO9A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:feedback-id:message-id:date:subject:cc:to :from; bh=btvLexKbzxft9Qnev/qYVZBjFPe7jaYr4HiX094dR7c=; b=hm279PHhKkqHPKp+X8diBcKwuo8b+5MtYxdU/zEuXA/cgPp8Mzk9PUcG+qmfdbGcGO LAq+g2SEtU8rNrqWcCwvcxw+iTmtESweMgt8ZyX/8jaCCEamXbUZHSEUFuJEUF8YLZQ1 oyRXziIIH4dGSjqox+HvLjkvEAOBs1lfl8LKk2LpIiTMU8CS2DavXcWgkpzJod6FDGOF xz6c7EbadX8qzcTj7ggiNlerbVNkE+h0cnIrYb+rBpXTC90dMhmClYJxacE10+UNgi/a y11QB9uzsaAheJ46gAsfMGuHwaqISpCrtxVwNYQlh0oKtFI7ggGefi2GT1iTatX8El6y +gyA== 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 o70si8029604pfa.33.2019.05.17.00.30.14; Fri, 17 May 2019 00:30:29 -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 S1727777AbfEQHFg (ORCPT + 99 others); Fri, 17 May 2019 03:05:36 -0400 Received: from smtpbguseast2.qq.com ([54.204.34.130]:42746 "EHLO smtpbguseast2.qq.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727145AbfEQHFg (ORCPT ); Fri, 17 May 2019 03:05:36 -0400 X-QQ-mid: bizesmtp6t1558076698tb2se918y Received: from localhost.localdomain (unknown [218.76.23.26]) by esmtp6.qq.com (ESMTP) with id ; Fri, 17 May 2019 15:04:48 +0800 (CST) X-QQ-SSF: 01400000000000H0HG32B00A0000000 X-QQ-FEAT: cEiBA8c+CrMUAvBZUbu+tVgMV1D2i6pAvpNrRwu5R4jPcrEQw0qUY6lmMveSF IsHhRH6FnFK1Nl07GWmT31ZHiFHiJU2SpnMGQxJd4eb0qEobhwEtVxVwywCSz7wMUFr7pAm +lvQF4rQmRSIejTZvbrg/ojc0Qe+PyI582iZy3ikStEOtGKAwGpG447fFwCcbA1n5dY4sEn c6/0n45W5y8IDfe57AoQhRMz81+v31CNHshHM6nte/igmD7E1IxNTS38sWwVnOwcL/9/Vck x/MVgssj1sDQ7/+MNWuJLngKJ9yVvy/UG3NGg4qp8bHGyRcIKeutGZ+vA= X-QQ-GoodBg: 2 From: xiaolinkui To: hch@lst.de, sagi@grimberg.me Cc: linux-nvme@lists.infradead.org, linux-kernel@vger.kernel.org, xiaolinkui@kylinos.cn Subject: [PATCH] nvme: target: use struct_size() in kmalloc() Date: Fri, 17 May 2019 15:03:35 +0800 Message-Id: <1558076615-8576-1-git-send-email-xiaolinkui@kylinos.cn> X-Mailer: git-send-email 2.7.4 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:kylinos.cn:qybgforeign:qybgforeign1 X-QQ-Bgrelay: 1 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Use struct_size() to keep code sample. One of the more common cases of allocation size calculations is finding the size of a structure that has a zero-sized array at the end, along with memory for some number of elements for that array. For example: struct foo { int stuff; struct boo entry[]; }; instance = kmalloc(sizeof(struct foo) + count * sizeof(struct boo), GFP_KERNEL); Instead of leaving these open-coded and prone to type mistakes, we can now use the new struct_size() helper: instance = kmalloc(struct_size(instance, entry, count), GFP_KERNEL); Signed-off-by: xiaolinkui --- drivers/nvme/target/admin-cmd.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/nvme/target/admin-cmd.c b/drivers/nvme/target/admin-cmd.c index 9f72d51..6f9f830 100644 --- a/drivers/nvme/target/admin-cmd.c +++ b/drivers/nvme/target/admin-cmd.c @@ -248,8 +248,8 @@ static void nvmet_execute_get_log_page_ana(struct nvmet_req *req) u16 status; status = NVME_SC_INTERNAL; - desc = kmalloc(sizeof(struct nvme_ana_group_desc) + - NVMET_MAX_NAMESPACES * sizeof(__le32), GFP_KERNEL); + desc = kmalloc(struct_size(desc, nsids, NVMET_MAX_NAMESPACES), + GFP_KERNEL); if (!desc) goto out; -- 2.7.4