From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-yb1-xb35.google.com (mail-yb1-xb35.google.com [IPv6:2607:f8b0:4864:20::b35]) by sourceware.org (Postfix) with ESMTPS id 0F1D83858D37 for ; Mon, 15 May 2023 16:21:30 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0F1D83858D37 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-yb1-xb35.google.com with SMTP id 3f1490d57ef6-b9e2b65d006so19989352276.3 for ; Mon, 15 May 2023 09:21:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1684167689; x=1686759689; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=K/QOkUbzzPWTloDYBrduOO8Q2sJceTCDpIcZutOS/4A=; b=FYbITZfnItjRqb7eUyI5259tIHDJfavkZArLcN216eBkSwDe2aHZIMMGMGcv9czELb bTTCrGcDAqYpmHXcPyPS7eAIqrhc+55YkNXlXdjTd/j43DSEeh0az/ysExPRxHaw82S1 c1OmPyijoB3c3u+rCK6hAcu8eXzfnA+S9gfwiQ+8Ci5FoGLgi+TzVdrG/csYP+P84vRT 1ju3eTI8EyjHD4zcP1EneayhkbcmyG8+mkXpVA2EtFfffX5/4fjEqMufbm+t5VO78OkL crq5vK4POXb48ys1bDGpXg6jlXgyGZD7A3xHR4ctgHJcovwbhC5Yv6i9GCP9Pgr3Hw8D Ioiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684167689; x=1686759689; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=K/QOkUbzzPWTloDYBrduOO8Q2sJceTCDpIcZutOS/4A=; b=W/Vund2S0iC1d13q5DCTRAr2qXCCrX8p9UfYi7/+TYM+BpEukPiABHf/Bmdat7WTPj nNh56LUw9cdDGBrJCZMzgcKkWd6g/rM/xBF/yM36A9YWRU2ROhMrmZ/Mi5P9LodLSXeQ wpEhFSgbxxMwBBnK+RJsvVNL7avPQDGZ5kajrWUOg0TL+g/In7L/qEfYu6TshflbT/+y 18ZjEQIrWApMIET4s4nv6GGJMH8dFPi3s1zjRUwGDn8q8j4E8gHxrBzePkzNTIUNYTE9 9GXCdyJLH7UdVwTna3/6P1UwtKJuRrevkQLrYU6zspRPVQC3JXsGm/aS4Gl7F9gmWNeW M6yg== X-Gm-Message-State: AC+VfDxreLtK7xFk7t+7xFJNKw5rJdgnoQs1z5YTHz6/Nwl7chwAqDOj eG8smlH+f16U4b3L3U38Uu6INEeTF4ZDY7zFaXzeMLlU X-Google-Smtp-Source: ACHHUZ6z3Z+k26BTYjhiq13bmjjermFGYAXytzmF/Wx0z+Bh5Fs2VQQ7H1NrXHwxTCmOk23J6Lf1J9EHBBcPlHqiCbo= X-Received: by 2002:a0d:c641:0:b0:544:ccde:b6b8 with SMTP id i62-20020a0dc641000000b00544ccdeb6b8mr30707188ywd.4.1684167689357; Mon, 15 May 2023 09:21:29 -0700 (PDT) MIME-Version: 1.0 References: <20230424150353.1469397-1-josimmon@redhat.com> <20230424150353.1469397-2-josimmon@redhat.com> <20230515141548.GA176347@oak> In-Reply-To: <20230515141548.GA176347@oak> From: "H.J. Lu" Date: Mon, 15 May 2023 09:20:53 -0700 Message-ID: Subject: Re: [PATCH v6 1/3] x86_64: Set the syscall register right before doing the syscall. To: Joe Simmons-Talbott Cc: libc-alpha@sourceware.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-3021.8 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On Mon, May 15, 2023 at 7:15=E2=80=AFAM Joe Simmons-Talbott wrote: > > Hi H.J., > > Is there anything else you are looking for on x86_64 WRT this patch? > > Thanks, > Joe > On Mon, Apr 24, 2023 at 11:03:51AM -0400, Joe Simmons-Talbott wrote: > > To make identifying syscalls easier during call tree analysis load the > > syscall number just before performing the syscall. > > > > Compiler optimizations can place quite a few instructions between the > > setting of the syscall number and the syscall instruction. During call > > tree analysis the number of instructions between the two can lead to > > more difficulty for both tools and humans in properly identifying the > > syscall number. Having the syscall number set in the prior instruction > > to the syscall instruction makes this task easier and less error prone. > > Being able to reliably identify syscalls made by a given API will make > > it easier to understand and verify the safety and security of glibc. > > --- > > sysdeps/unix/sysv/linux/x86_64/sysdep.h | 24 ++++++++++++------------ > > 1 file changed, 12 insertions(+), 12 deletions(-) > > > > diff --git a/sysdeps/unix/sysv/linux/x86_64/sysdep.h b/sysdeps/unix/sys= v/linux/x86_64/sysdep.h > > index cfb51be8c5..0db8660531 100644 > > --- a/sysdeps/unix/sysv/linux/x86_64/sysdep.h > > +++ b/sysdeps/unix/sysv/linux/x86_64/sysdep.h > > @@ -257,9 +257,9 @@ > > TYPEFY (arg1, __arg1) =3D ARGIFY (arg1); = \ > > register TYPEFY (arg1, _a1) asm ("rdi") =3D __arg1; = \ > > asm volatile ( \ > > - "syscall\n\t" \ > > + "movl %1, %k0\n\tsyscall\n\t" \ > > : "=3Da" (resultvar) = \ > > - : "0" (number), "r" (_a1) = \ > > + : "g" (number), "r" (_a1) = \ > > : "memory", REGISTERS_CLOBBERED_BY_SYSCALL); \ > > (long int) resultvar; \ > > }) > > @@ -273,9 +273,9 @@ > > register TYPEFY (arg2, _a2) asm ("rsi") =3D __arg2; = \ > > register TYPEFY (arg1, _a1) asm ("rdi") =3D __arg1; = \ > > asm volatile ( \ > > - "syscall\n\t" \ > > + "movl %1, %k0\n\tsyscall\n\t" \ > > : "=3Da" (resultvar) = \ > > - : "0" (number), "r" (_a1), "r" (_a2) \ > > + : "g" (number), "r" (_a1), "r" (_a2) \ > > : "memory", REGISTERS_CLOBBERED_BY_SYSCALL); \ > > (long int) resultvar; \ > > }) > > @@ -291,9 +291,9 @@ > > register TYPEFY (arg2, _a2) asm ("rsi") =3D __arg2; = \ > > register TYPEFY (arg1, _a1) asm ("rdi") =3D __arg1; = \ > > asm volatile ( \ > > - "syscall\n\t" \ > > + "movl %1, %k0\n\tsyscall\n\t" \ > > : "=3Da" (resultvar) = \ > > - : "0" (number), "r" (_a1), "r" (_a2), "r" (_a3) \ > > + : "g" (number), "r" (_a1), "r" (_a2), "r" (_a3) \ > > : "memory", REGISTERS_CLOBBERED_BY_SYSCALL); \ > > (long int) resultvar; \ > > }) > > @@ -311,9 +311,9 @@ > > register TYPEFY (arg2, _a2) asm ("rsi") =3D __arg2; = \ > > register TYPEFY (arg1, _a1) asm ("rdi") =3D __arg1; = \ > > asm volatile ( \ > > - "syscall\n\t" \ > > + "movl %1, %k0\n\tsyscall\n\t" \ > > : "=3Da" (resultvar) = \ > > - : "0" (number), "r" (_a1), "r" (_a2), "r" (_a3), "r" (_a4) = \ > > + : "g" (number), "r" (_a1), "r" (_a2), "r" (_a3), "r" (_a4) = \ > > : "memory", REGISTERS_CLOBBERED_BY_SYSCALL); \ > > (long int) resultvar; \ > > }) > > @@ -333,9 +333,9 @@ > > register TYPEFY (arg2, _a2) asm ("rsi") =3D __arg2; = \ > > register TYPEFY (arg1, _a1) asm ("rdi") =3D __arg1; = \ > > asm volatile ( \ > > - "syscall\n\t" \ > > + "movl %1, %k0\n\tsyscall\n\t" \ > > : "=3Da" (resultvar) = \ > > - : "0" (number), "r" (_a1), "r" (_a2), "r" (_a3), "r" (_a4), = \ > > + : "g" (number), "r" (_a1), "r" (_a2), "r" (_a3), "r" (_a4), = \ > > "r" (_a5) = \ > > : "memory", REGISTERS_CLOBBERED_BY_SYSCALL); \ > > (long int) resultvar; \ > > @@ -358,9 +358,9 @@ > > register TYPEFY (arg2, _a2) asm ("rsi") =3D __arg2; = \ > > register TYPEFY (arg1, _a1) asm ("rdi") =3D __arg1; = \ > > asm volatile ( \ > > - "syscall\n\t" \ > > + "movl %1, %k0\n\tsyscall\n\t" \ > > : "=3Da" (resultvar) = \ > > - : "0" (number), "r" (_a1), "r" (_a2), "r" (_a3), "r" (_a4), = \ > > + : "g" (number), "r" (_a1), "r" (_a2), "r" (_a3), "r" (_a4), = \ > > "r" (_a5), "r" (_a6) \ > > : "memory", REGISTERS_CLOBBERED_BY_SYSCALL); \ > > (long int) resultvar; \ > > -- > > 2.39.2 > > > I have no more comments. --=20 H.J.