Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp3788022ybl; Tue, 21 Jan 2020 07:04:39 -0800 (PST) X-Google-Smtp-Source: APXvYqyAOGpcE1cbHGToIVmiGW2DqdvzTekHgBCCj2p36UP4pv90WWky+ZZGZHQofhaKTDqC58WQ X-Received: by 2002:a05:6808:8d0:: with SMTP id k16mr3363941oij.68.1579619079117; Tue, 21 Jan 2020 07:04:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1579619079; cv=none; d=google.com; s=arc-20160816; b=br8s0LwThtWDgycBHcMyPk/JtabRrjMD1q2yiML6ghEPIhSzFrWL0u9hjbgSd5E+TZ CAh9VYQZuxQ395O81aiwQiqp6VRAyGLFiP4XV3BEaJ90u2MTWj9wHB/7WZfDjrqqqQbD eVsMy6CQ4vkzg3vfJmz69BQ+qk+F3eOqCeDeQr94wVpgRyYs1Q5+EzSsANwozLUzWL/g 9+x9dluRDRMDd4FT2Zv7K8QDCuIGfIl8YU0I9a4SWd4+OYXMeczM8kOrt9REhXMR/1rR 1KXx15jWXFE2X8PcIgGiCXt3Omb8/6tpFZLQ1AbRPwUhpxhHKWw7TnwooFb4rmPqgOLk 4lBw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=6DzX/6x6yVWrZI+wZeTseenMuBzS/NjeUu7BzygEE/8=; b=NovQVmxcZJbyuKJbc9LzWqTjns+pefH/flwNqkxkAwobsZwDJw4dt2FTzGOgGijBAM 8L15sbJseytiwn24MoR2Rxf5v5H8gjKbazrNTGraTQsyjxTFhUMZrsWDUMLuK3LOQV7m KEKSCUuU8E5dBmE48jvQpYpFwaDluVa/CqD8CkXaFB2QDdzjEFcqAUe6sp2EFe7UgjGG rrtV7uvXBX8cBBHXDtI01zHTNcaw1RfRhnqHEjMrCTflaOyvlBFCowmOrCaAqm1Y/I6z a8D18j71J9qgd5IZ1v5LNOImOyw08pOnKPb9i0x3+kkm6hbNer1NmxQXoi+pmAlL7OHH gx6A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=VXpsgVKP; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id w16si20275228oih.154.2020.01.21.07.04.21; Tue, 21 Jan 2020 07:04:39 -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; dkim=pass header.i=@gmail.com header.s=20161025 header.b=VXpsgVKP; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729030AbgAUPBC (ORCPT + 99 others); Tue, 21 Jan 2020 10:01:02 -0500 Received: from mail-lj1-f196.google.com ([209.85.208.196]:40435 "EHLO mail-lj1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726968AbgAUPBB (ORCPT ); Tue, 21 Jan 2020 10:01:01 -0500 Received: by mail-lj1-f196.google.com with SMTP id u1so3110763ljk.7 for ; Tue, 21 Jan 2020 07:01:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=6DzX/6x6yVWrZI+wZeTseenMuBzS/NjeUu7BzygEE/8=; b=VXpsgVKPZT2JseU60NlzzxmyR0H/zObzdwyLNv/QIz4zkUjpRDCE8SR6j6FbvLK5z8 ZWY49jzxWCJmA8GXu37WBns/SicdHScCsSN1heOC1D9OBWEfiVFDnDk2/pU2QzLoZskD 2ZZLUQISHxgpN6WGIKYj9LRIgHjzuTdb+hYs4OWkJ8yPVKUY37wuPMPMFUOrY99aPwlz 71EbJ7PqzVw9yKkAKSjv9fWWIIaTvz/BjVfY2rMyiq7o3q8kIO2BCZLcFYt31kfaUa47 RHwRXND2EfZmq0J30ORhF3tEmQEE/rRkJ422WFKmwRo9uTLH2weztw52Yc05j5GC98Ha ZLAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=6DzX/6x6yVWrZI+wZeTseenMuBzS/NjeUu7BzygEE/8=; b=fHy6vybwr2gKojOsYO4zhgGTC6EQNIM7a47wfdtTukoKe/uMoNWFdkX/wZgcTsPj8L 8S9JXN4Ytg1g/0p+BwN0ilx7QZTSz7kDvl9yaaNxINXg5zMYsfDkyIZk7QQ3ximyjg0i VnjimbEM+z+4Z50/B1jTazAd89PNC8AX83JugC7Qw9RYZM0bZwS7/gb+cLsEc88S13Oi okAFXB23Cd1V7rhTv5jR00hcn40jxyMXn7zWRmnAMnYymrarDuCkelAhvu4ilJnZFt9W rENPgDCM8qsBslN9n59eSKOSsh9Lb/JO5yLAMD9qitRz5FNvw/bzArIQHzILd+A3Pu3B qZVA== X-Gm-Message-State: APjAAAVnwiiUwHNzSi3gvBwGogu3/5MTS6RF/MHCyKAc9zaS+ht0o7RF 03nAM6tpJpWeGoxMyUccjPI= X-Received: by 2002:a2e:9a01:: with SMTP id o1mr16888697lji.247.1579618860344; Tue, 21 Jan 2020 07:01:00 -0800 (PST) Received: from localhost.localdomain (h-88-110.A230.priv.bahnhof.se. [212.85.88.110]) by smtp.gmail.com with ESMTPSA id t20sm18441519ljk.87.2020.01.21.07.00.59 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 21 Jan 2020 07:00:59 -0800 (PST) From: Mikael Magnusson To: gustavo@embeddedor.com Cc: gregkh@linuxfoundation.org, jslaby@suse.com, linux-kernel@vger.kernel.org Subject: Re: [PATCH] tty: n_hdlc: Use flexible-array member Date: Tue, 21 Jan 2020 16:00:53 +0100 Message-Id: <20200121150053.31457-1-mikachu@gmail.com> X-Mailer: git-send-email 2.15.1 In-Reply-To: <957960eb-118f-21c7-8901-50f54d65d7cb@embeddedor.com> References: <957960eb-118f-21c7-8901-50f54d65d7cb@embeddedor.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Gustavo Silva wrote: > On 1/20/20 23:54, Jiri Slaby wrote: >> On 21. 01. 20, 0:45, Gustavo A. R. Silva wrote: >>> diff --git a/drivers/tty/n_hdlc.c b/drivers/tty/n_hdlc.c >>> index 98361acd3053..b5499ca8757e 100644 >>> --- a/drivers/tty/n_hdlc.c >>> +++ b/drivers/tty/n_hdlc.c >>> @@ -115,7 +115,7 @@ >>> struct n_hdlc_buf { >>> struct list_head list_item; >>> int count; >>> - char buf[1]; >>> + char buf[]; >>> }; >>> >>> #define N_HDLC_BUF_SIZE (sizeof(struct n_hdlc_buf) + maxframe) >> >> Have you checked, that you don't have to "+ 1" here now? >> > > Yep. That's not necessary. > > _In terms of memory allocation_, zero-length/one-element arrays and flexible-array > members work exactly the same way. This is not true, but maybe it's still not necessary in this particular code, I didn't examine it. Consider the following: #include struct flex { int count; char buf[PRE]; char flex[]; }; struct one { int count; char buf[PRE]; char one[1]; }; void main() { printf("%ld %ld\n", sizeof(struct flex), sizeof(struct one)); } --snip-- % gcc -o siz siz.c -std=c99 -DPRE=7 && ./siz 12 12 % gcc -o siz siz.c -std=c99 -DPRE=8 && ./siz 12 16 Since all the preceding stuff in the struct in the patch is aligned, then the [1] will definitely add something to the sizeof count. -- Mikael Magnusson