Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp736236ybl; Fri, 6 Dec 2019 05:32:56 -0800 (PST) X-Google-Smtp-Source: APXvYqyc35WuIckeEh1u1kJ71l41IopuFa5rIRbEB6pP3F7qNw2TvTf2dAR4a171lR+ppIEF/Ebq X-Received: by 2002:aca:a896:: with SMTP id r144mr12470737oie.142.1575639176278; Fri, 06 Dec 2019 05:32:56 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1575639176; cv=none; d=google.com; s=arc-20160816; b=JB9CfLt1Spu3bPIyh6fQnV8JZYESW1hqiryeUCr65B1jzNVi18OyG5ZPUGIY4U+GJr 2N+9AZ1r1l7zm0dZlY09527QnKCKKD6VEr3+NepfKxWEiuYvWHirK2W9/JiFVJpYGwqW /3bFrpR2Cmdbdk106ne6GBSHVoT4NYRS+s2Bx8F3QQPBWJDOcaiG2Ob5SNG3U7ro9PKX iZhnpaGfqJUGMF/LOhJt+zmy+pGg8KmqrbROXytTEEJksQyKITYVYpFGxfd3DXByDenI ijf20BSwU9hmMirpDSurA+7uZRmNVHTP3l4Rs36bVQ548XRHNozovKJq4RvCl+TBrRjC I8mQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=2S08e87qyOClIb15ji+5kVBV12PJ10Rg7yCvmuY9seI=; b=IM7CZmpNIXLkLixAxY/w7cITzzOnPC6oyZhf6NghA54NPRmbuzNNyKZ1d3c86Dn6Bz UWK70bu4Ia7vULX0w2ej13OYKoW1Dq4XtrrJgJda0M+NiWlNbgJYXNoSvjLQTTVvQnRs vpoYXc3W68BK+X6apwoR7brmfVTCpoib5oF43A7lBClI11JeIjOHUynjKgg70zSaTu5u QGu6phpv+gnpTjhTk+vFA+rfXz/g41NVJIrMgrPZ/LG6ee0Z7kIAT/BS9yjDA4PoRcex CB+XMVusKPr1UmabZnHYYLqWZGwHHxf6J6R2Dl2E44EimMY+KkBVThowRiqcvB/Pg59I fCFQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=L67Udo4k; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id i10si6870204otk.195.2019.12.06.05.32.43; Fri, 06 Dec 2019 05:32:56 -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=@google.com header.s=20161025 header.b=L67Udo4k; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726271AbfLFNcG (ORCPT + 99 others); Fri, 6 Dec 2019 08:32:06 -0500 Received: from mail-pg1-f196.google.com ([209.85.215.196]:36676 "EHLO mail-pg1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726259AbfLFNcG (ORCPT ); Fri, 6 Dec 2019 08:32:06 -0500 Received: by mail-pg1-f196.google.com with SMTP id k3so2685687pgc.3 for ; Fri, 06 Dec 2019 05:32:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=2S08e87qyOClIb15ji+5kVBV12PJ10Rg7yCvmuY9seI=; b=L67Udo4kJZKk80cfaTAth0CgKYP/DsxHicSKHyNruf6i0ke+J/XqppX60g+cun9oq+ rU/KAZ8Vz2gnPIK0EecvN4/PgsuGXj2aZy8D9+I0AlhNnAKRRQfim9LG1cW1/j6X6wgu DaOoDtVEjztCMMS3YDEMmhA5F7rTQRPMvvYVTM0f84Z0NAzd+AyuofKkyrBojGf2v+Ui yd+UmL61srEGYH3zMaExIUzkvqRsJMuEYN/nmFRbo91eZxwz5AGpCitV+1ZGm7hGWCLH NGyP9Au3P/xw+DkJAFZEiQVTLt+3Vgr90XMwdtcmH/wS+POClIxXnd2Xf9X3QvBM7SbU iJIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=2S08e87qyOClIb15ji+5kVBV12PJ10Rg7yCvmuY9seI=; b=UZkn60G2w1j1ejss2cCGjujhwns1XqL6YSmC2ir+t76zz4Bee4MrVTNSJ5GUKX4czN 79ZDAVPGECwF0esFgw9nexTFY7eGV/gf8EZTjsFTMuYY+13weee6JmicxIZTuNyVTd0Z xIRZggKI27OpkqCLcZeb5fK4xRBkhfpq2srSZtxbpKA8fcweFUq9uS57Uao9qmdtj5ex CsYO5poJpmVUVA9yaTkAl8/mH8/vw4opBrLPgfjkBfCgSFIUv1CrckwuxvxLo2rbd5uJ nzBNG9eyC7XxYwMsPLZ5QrGBWd2mNFdxKpCUTz+lou73rQs9oSKAEV8gXMu6jLC/uMHz Jqaw== X-Gm-Message-State: APjAAAWFO61vI0xQMY5a4xBJcdMDEz3761Xbc0WCNuNvxcMrtUFGZRXy ReK3xWlzeVt9AkrCcoBOld/5kZ4fU4c5zp+TVIiKzw== X-Received: by 2002:a65:678f:: with SMTP id e15mr3508678pgr.130.1575639125248; Fri, 06 Dec 2019 05:32:05 -0800 (PST) MIME-Version: 1.0 References: <46cee2a09d53921057cd4b87d1ed3796a2ab15bb.1575637022.git.andreyknvl@google.com> In-Reply-To: From: Andrey Konovalov Date: Fri, 6 Dec 2019 14:31:53 +0100 Message-ID: Subject: Re: [PATCH] kcov: fix struct layout for kcov_remote_arg To: Marco Elver Cc: Andrew Morton , Dmitry Vyukov , LKML , Alexander Potapenko Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Dec 6, 2019 at 2:14 PM Marco Elver wrote: > > On Fri, 6 Dec 2019 at 14:05, Andrey Konovalov wrote: > > > > Make the layout of kcov_remote_arg the same for 32-bit and 64-bit code. > > This makes it more convenient to write userspace apps that can be compiled > > into 32-bit or 64-bit binaries and still work with the same 64-bit kernel. > > Also use proper __u32 types in uapi headers instead of unsigned ints. > > > > Signed-off-by: Andrey Konovalov > > --- > > > > Hi Andrew, > > > > We've noticed failures on 32 bit syzbot instances when the kcov patches > > got merged into mainline. The reason is that the layout of kcov_remote_arg > > depends on the alignment rules, which are different for 32/64 bit code. > > We can deal with this issue in syzkaller [1], but I think it would be > > cleander to get this fixed in the kernel. > > > > I hope this patch is acceptable, since the change has just been merged and > > is not included into a release kernel version. The patch breaks the newly > > introduced kcov API for 32 bit apps. > > > > Sorry for not testing it with 32 bit code earlier. > > > > Thanks! > > > > [1] https://github.com/google/syzkaller/commit/ba97c611a36b7729d489ebca5f97183c2ba7a90a > > > > Documentation/dev-tools/kcov.rst | 7 ++++--- > > include/uapi/linux/kcov.h | 11 ++++++----- > > 2 files changed, 10 insertions(+), 8 deletions(-) > > > > diff --git a/Documentation/dev-tools/kcov.rst b/Documentation/dev-tools/kcov.rst > > index 36890b026e77..744df2bae1ed 100644 > > --- a/Documentation/dev-tools/kcov.rst > > +++ b/Documentation/dev-tools/kcov.rst > > @@ -251,9 +251,10 @@ selectively from different subsystems. > > .. code-block:: c > > > > struct kcov_remote_arg { > > - unsigned trace_mode; > > - unsigned area_size; > > - unsigned num_handles; > > + uint32_t trace_mode; > > + uint32_t area_size; > > + uint32_t num_handles; > > + uint32_t reserved; > > uint64_t common_handle; > > uint64_t handles[0]; > > }; > > diff --git a/include/uapi/linux/kcov.h b/include/uapi/linux/kcov.h > > index 409d3ad1e6e2..53267f9f1665 100644 > > --- a/include/uapi/linux/kcov.h > > +++ b/include/uapi/linux/kcov.h > > @@ -9,11 +9,12 @@ > > * and the comment before kcov_remote_start() for usage details. > > */ > > struct kcov_remote_arg { > > - unsigned int trace_mode; /* KCOV_TRACE_PC or KCOV_TRACE_CMP */ > > - unsigned int area_size; /* Length of coverage buffer in words */ > > - unsigned int num_handles; /* Size of handles array */ > > - __u64 common_handle; > > - __u64 handles[0]; > > + __u32 trace_mode; /* KCOV_TRACE_PC or KCOV_TRACE_CMP */ > > + __u32 area_size; /* Length of coverage buffer in words */ > > + __u32 num_handles; /* Size of handles array */ > > + __u32 reserved; > > The kernel provides __aligned_u64 for this purpose (32/64 bit uapi > compatibility). Oh yes, this is much better, sent v2, thank you! > Is adding an explicit 'reserved' better here? If so, > it'd be good to document.