From patchwork Fri Feb 10 10:10:52 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 726466 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3vKW1w0p2Jz9s3v for ; Fri, 10 Feb 2017 21:11:31 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b="lBXvoFIS"; dkim-atps=neutral DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id :mime-version:content-type; q=dns; s=default; b=PbTJPT77yJyzXEpD DnSn1ZkIrZkHfRVWPgV+0nIZlsXUU0n9pIXOPMwLPe6g3PcRl5xnTmE1HFsQps10 rgX/pV0oBV/9tRj9QyrYETbzAdOOUCgpZYfE1hD9Q6ki38d5CS5ecyjDKjLmh2pP /M5j84S/zeQRPNuv1kx+uKLjia0= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id :mime-version:content-type; s=default; bh=fS+qvzppFzGk2pjmSU5/mO acYSQ=; b=lBXvoFISkSs289tYQN43SbrNq6ERiVJms5bvKs59oPONw4gvw+EoLX R7hZsPMO588bxcvBezXmf9xhOhCPsVu2xBD+9aoRYBwCHhzrZ/w+FquPuqEhtuif yp3gClFuredoOhx0GyozcWHZchWlwjiBaKjxhwxQRb0aRBQKDvZMM= Received: (qmail 34121 invoked by alias); 10 Feb 2017 10:11:24 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 33891 invoked by uid 89); 10 Feb 2017 10:11:23 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.5 required=5.0 tests=BAYES_05, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=ynorov@caviumnetworks.com, sk:ynorov, sk:ynorov@, ynorovcaviumnetworkscom X-HELO: NAM03-CO1-obe.outbound.protection.outlook.com Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Yuri.Norov@caviumnetworks.com; From: Yury Norov To: libc-alpha@sourceware.org Cc: Yury Norov , Adhemerval Zanella Subject: [RFC PATCH] Test for syscall templates Date: Fri, 10 Feb 2017 15:40:52 +0530 Message-Id: <1486721452-15097-1-git-send-email-ynorov@caviumnetworks.com> MIME-Version: 1.0 X-ClientProxiedBy: VI1PR07CA0066.eurprd07.prod.outlook.com (10.164.94.162) To CY1PR07MB2248.namprd07.prod.outlook.com (10.164.112.150) X-MS-Office365-Filtering-Correlation-Id: 0484706c-2190-414a-f942-08d4519d2278 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:CY1PR07MB2248; X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2248; 3:kBFk6w+deOgCWlbhJWM8PpYuR20NWvUcGn1c2c1eyNzgT520Dg2uv1iSnECtpDmYVUrf1ky8QFNVnuZ2jgHzJ4KJZTxBtaDYzoYMNVUbtq8xgyhGqOu/YS7OzHLxr74/bmCgYWLfpDkZayhiBfU5f6WNXUsvop588nWs8balLX0eT743qIMkPGcYChLXrPBsmmXv/t4oiK2yr3yrNN/mLmsYkMjXM0NtQSiq18y1Ka7WFR7xgK5ohCW26k0veaVX3ptwjOf1jWI8nEdOvQPbjw==; 25:eB7cP6M/tamKJkbwydYL0sEGvPqlxXGsTqp+GlL6aaps0vFOO9Mj3LeYHyopy6VQLzvjapSmnjtKPQMD4myxvI4tUXyIgk8fRLvq87s/rc5HzbyvsJqkll2VQvlOOCI9V0f1j8pvkzGLMmAoLKHL7310Bo88qwZrZWG3u9I3fummmiYZTKf/wOtPnKl+s4Mmyzkf/of28lCqwp/ZQ1GM9Ak75nBZubTOgSEZ15FzUfD7rwSNG7KDfp/PXFrJq8McXcFGgcXWMbU0kvgfJ9KHZPFInHwTgbPB+xXNakqZ+PR7mNRxRxMDcR/c4WAh62IWUHmN3fju3kN9frYILJyUalrrEw4DdeN749M2ilEedFsgtZ/mPVwyXcc1F5Eo6Lh4XN6n6L6UuROaAoNAsilIe3vqoBaNyk/0jnnp803wMMa7wP0Pyn761WbIdXyfU7t5QB+EO/sFIU0C7fZU9dqVOw== X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2248; 31:O3j9m+JieZiZI+uN3JoWz89NabRBvvWvuVrlDEtN8d4LFxbwOmg1I7YIRNfz7obDAiSIm63VDAyXYyrNtAaG8LDXLg2P8FFKFa/b9cUoDIugfJepLNkAMD1ZKrXN8rZCm9njiMeYikSxd3OGthuNesQRzmuuRCiIociOu9LJZ8QcAgtmFyO9oaJ4VECtknYdC3NX+PxafKTS8uhLLGVviQpyRjjX8sfwwsukFVveqkg=; 20:/0UtgU8zOwEvoUpIOz+ufyBKkiezQCFGgiZbFmc8qCldQBUOcrzMxyObPH/54zC7VAEvnG6nHNAYFvePU07j4peSNszHJtDcHqJMaM5IDygm30lWpTZQHXBOsCDTdRD2i39qyNXGyNm9ddtfiFMGp8336183wzI3eHtxslvR8WYUciGod0c64JZxgzL5PyyXatsIZaaNaCY2V6entQtL5HzE7C/0ZLzfQs7+52j/e46/o7VUJViijslxbHJrgOA2ZSys7Eti5ip69a3sTy+ziU91NcmafMpMGKHxQpZchjdH2hwe+RDd+VfRUE8NI0kgLCrsu01zO2GEDu6NSMIWkTOtGNic6K/xh0+yAkI7SuFWJtqRQ4tzNo2/litXLDrLQJWMyIeib0vgxYqFvvRMliZ2FChJvqBk/9bITDGMEmOpvC4LmXvJV3KlKIiCCz+rqDtH/lkUuEhglHniNc3tlMccEiM7k/hgHD6bDBK2Z7z1s37x2kCteZv0WP38+TI/O3dhXPyB6sYfUrNCSoCgUKn+j0mgTzx09BlLinrh5XlwcruaDWnWvcQ+cfjx6mX1yHhGAybE8LOiBje1QYjo7Qh0bATomSd/KqpKdjtmFbI= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(250305191791016)(22074186197030)(166708455590820); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6041248)(20161123555025)(20161123558025)(20161123562025)(20161123560025)(20161123564025)(6072148); SRVR:CY1PR07MB2248; BCL:0; PCL:0; RULEID:; SRVR:CY1PR07MB2248; X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2248; 4:E6irQA8MFfRlN+MxLy5zIZ+ny3CNBSHv/V2h8n7nSq0UOEArlIH8VPQFKXBUe034P8rSHgmD1NoguiEYykTi0z4z15mP8OQIpMO5X6lupIFIa3VhbeLHwWA6Kwlv3Yk7NYxoyizJIR3BaeMe5tKhOKX8BETiSGQzkXr6kK1WK7npL+AVTGfCgD8iODq8lX3v6Ay6fnKLBhbljJQLSFU1LU7GwlW6LbTi/Gh/iS3BQZS6djWjbgsZXgQhlublkqFCAEuMGGtbpKnKEKKVxn3VKJlfGxcL19DV7nk/4NlF0YHirQp/t7DeSsxEF1xVYmdpLvhLCh0HSceEYvJOApZxC1zsBp61KIC4ulheP7WwmvC+k6GIQTGWJWi/ZeRHkQ0AnQmVryfWS/GzdqrmoTweOdBkPMYyvIclkB4Dql4/flKnsMy43cXnSx58e4p3Owq/ajXAARAo4sm38PJiPZ19t/GesR+uq3jv0TGDlcwUbdCx8OS2PMMv8KO9ehr61b4RFoIJNkqF4JDFsUivNUQKXrU0Koq4Q9tHuyee+N1cG5UZSq3oXM87XKtlUlcGTavWlnZLgEfB+UAGvWBfXyc3FwsDlhCktrHt65djGjeSyA+17pLnPTK7C/82Xqyt3A8BQ3ym2Ucc/ialnEqP5KhWx8knNo+KXj0ctR/1r/TL+4JyBJTnWpotNIzCAlQOuVIAOj55VygmuXJboXVE2Jmx+AudKK0bfFNixENeQQ8seJo= X-Forefront-PRVS: 0214EB3F68 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6069001)(6009001)(7916002)(39450400003)(199003)(189002)(36756003)(6916009)(189998001)(47776003)(76506005)(42186005)(66066001)(4326007)(3846002)(6496005)(38730400002)(68736007)(110136004)(2351001)(5003940100001)(50466002)(2361001)(7736002)(6486002)(6116002)(53936002)(50986999)(48376002)(25786008)(97736004)(101416001)(54906002)(106356001)(81166006)(105586002)(6666003)(81156014)(92566002)(33646002)(8676002)(50226002)(2906002)(305945005)(5660300001)(6306002)(2004002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR07MB2248; H:localhost; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: caviumnetworks.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR07MB2248; 23:2mAUy5SbgMZEpsJyfEO2BlsiIJAI/UuserXGHen9O?= =?us-ascii?Q?Eq7YrKOMsV111iye2ufUJtr+7VWJNMBE8DiVaBkwfmyK7ttGsiSQYzzv6fjT?= =?us-ascii?Q?3XpQOeTlet7/tJgYblf0w/Yt6ZuVBmbM5dQLkHAMCRgY+RNtxhc9UdDe7Vh6?= =?us-ascii?Q?AvuUV+Z+X08cwczrWUH9KSVZHc+9IRVN3eUyHyBO26vFlJF7cnCPnJOEhFc9?= =?us-ascii?Q?KCQxRP6mQ3qymmv1V0cuvFUgD98SviSb/MTzxkXp4n4dSzmCbh0LLPODS6yZ?= =?us-ascii?Q?0JZSUIhOEWiepEJW6NBg2ny0HFOG2gIYaVnI5yjzDXsPefDqjN2lviVMmDQ6?= =?us-ascii?Q?XBJT8ih4kxGv9ALAmofDb5NnsbfUQmb4WLcTHmfwGIgXIqRhqzmeAKKVCG28?= =?us-ascii?Q?Snq4MkmnBHZFc8YuCbObVwQp6zQfKF3jhx0xW9zDLQWuiXAvImiJDgiZ/03B?= =?us-ascii?Q?DeStpcqKKWGwPriBMzGzXa2t7WjvZ9YXxLzwX0b67DDWfPDYw+xrt7NllnqA?= =?us-ascii?Q?gZOBl5/uCmK0z1udfCmqspp+DpLZRIccWEb6KMgBEJNFYNSTMCVK3X4IybUq?= =?us-ascii?Q?EhM+lHP1AtOAPxe/NDTIQxJ2B9o14EHCO/Q9oVRUH//wFtixcWwsbdbscfEz?= =?us-ascii?Q?3otQNpqVU20d0DgPaq4DMY9Q3tH0mtHUaUvo25RzgJUoqYli4PnyUIBpMICl?= =?us-ascii?Q?2dFMQH0ahWfng85LNXR4Ky7VCifJiE8cXk0qvfYaiud+t9L/uOdr7x0pQC4S?= =?us-ascii?Q?ZsSDdn7+eKKR/LXC8MIelUQuPO6Fmo1vHdPFjhw6VEWh8CZHzW0lIdn/tjIl?= =?us-ascii?Q?w50dlR/XW197e+qGT959grkBv9ZdZ7TY00yYXlDez7nPXjGa/yiC72m/toFl?= =?us-ascii?Q?aqUPOYXaXcrDXXxkZ0vMdNnMQlgvaX+qXiJ8nffozN8Zaiz6fQYOsj0+T73j?= =?us-ascii?Q?UKwgMfpoqpIqlS0E7s/kJoq/jp0exfA38d/dK/S5twPEcfYhfV0WXQa2LbTk?= =?us-ascii?Q?IkXN3oQZweJBaBJh99N7vY/HlX+YxIYxJr2O1gaRBUDDdkCmdaJYb215JYgr?= =?us-ascii?Q?HjmZar5w5IHu06WLnICKv88aRNrRoHF3jLHaQpQR7G7W8FqVA8WNzhHLEyG9?= =?us-ascii?Q?/O89O7aZ6Qw7oduhiIQs8xxyOxaQyc6?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2248; 6:BxzMxQvgVBiQnZy7OesfgG5WGtMuPxR04PcB4w6ArVqIcztM6x10kGEzZSvV/ICIjjNyp2gZPqZV+jixNVgjyhwOvFtJK6/xwdt9co/bPWAXuogPZDZ682BVtkX4o1qJo/j3L36U3taH0LEDQBU03FjF5PTGNa+kghQqduiqYPrtUI7FCQ+oErnC+v59uuxJwlTdyUqEDPWS6Z2ojq7qMfl4Zp5RtvRv5BDnKsxvM7hOSu/TBLb6mOsf1bUSr+FIV2X3v/ALUk9DOUDizhF5Kj8iBM7NsOzNX9oH/n1W9rvk/CFXpaeX5W3McPp/Ut6Df5kY8QduDS3STpDlz8J7WajTJAGiuYw2G9aBgRqQwAPFGvf9PpQ1SYSDZbF+c3FVTiv48QUsGZ/89dp+mV0DYw==; 5:lAqdJXAKo+skBeRbaNgIkAoMq9O6MoGGLbPcYf2ygpzYxImO3T5GNlxaheiQLKiKs9dkiWJDisD6/2l8G2s1x3Q4szI9ulC45cagI8WqMlDGAneQGG4ZB7LlN81k+/hbpc/BB8MIDM4jkwh15/umLQ==; 24:ADvBrQoLZo3gHGesldgfyWGrtcPOkszCs31DqrZ8S14vh7V+6QDuDRI07DzdMrsW0rbLOWuZ6FqZ4/zUg6MWZijWLBe2HP58exuv8e4Pc7M= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2248; 7:S8+9BWx6QdAolnRC+iz84FeNVekNwi0N+hDQ7P/CICkX1vTe+rzH1Z9BM+TC0rY3OHZ45n57LMm38yfa/wS99TvB9iGJoOi7eVvFpdWWtZWCQ4Lyahppb/f96Uva90EmeXjpbk+a7METoJgY9F9Pg776CN3VoahVNujvWaLhBFRyxMNyTUVNVx0bC2xriKhYpl5h0QZ6+Q8V201Tu6l0YT2/CBBlXMI8pUS42mGUUqY1SEwcrCpObChgKK9WC+R7IpBbaDJep3/+QYnFzehnqLqaKN3aEo5dWebs2jI3Bkk+1b+j8Ub3uwujxLloxHYvVbs2vXCmtFnWykvaSix2PAkPS7C/2V/lNsFfi22qElgqFxBWUV2dPGAdvhBT8aNAS2XV7OZIi7Qw1NTYaS8gOYf5bjKmXHSIpWXPFFD6rRGr+4ALsfVrP29YPqjFljwxRP4fW4VDKbD9O0hCyWw3QQMA3PgyeUY/s24MXwssztdE66CbHkS0/0XxOAiDlVOQ9vFiHHjwNf47WcNotqEAxA== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Feb 2017 10:11:07.9237 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR07MB2248 The patch [1] fixes the bug in (not public available yet) aarc64/ilp32 port in SYSCALL_ERROR_HANDLER() macro - wrong calculation of errno location. The macro is called in error path of a syscall generated from syscall templates with PSEUDO* machinery. The bug has been discovered during the work on LTP tests, and it looks like there's no a glibc test to check it. For sure, there's no specific test for syscall templates. The following test sets the errno to invalid value (0xdead), and then calls write() with intentionally wrong file descriptor to force kernel to return EBADF which should be stored at errno location by SYSCALL_ERROR_HANDLER(). The test is failed before and passed after [1] for aarch64/ilp32 [2-3]. This is RFC because I'm not sure this is right way to check the macro as it implicitly assumes that the write() is implemented with templates, which may be wrong for some platform, or will become wrong in future. Though, if the test is OK, please apply it. [1] https://sourceware.org/ml/libc-alpha/2017-02/msg00110.html [2] https://github.com/norov/glibc/tree/dev9 [3] https://github.com/norov/linux/tree/ilp32-20170203 * sysdeps/unix/sysv/linux/Makefile: Enable new test tst-syscall-template. * sysdeps/unix/sysv/linux/tst-syscall-template.c: New test. Signed-off-by: Yury Norov --- sysdeps/unix/sysv/linux/Makefile | 2 +- sysdeps/unix/sysv/linux/tst-syscall-template.c | 55 ++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 sysdeps/unix/sysv/linux/tst-syscall-template.c diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile index b3d6866..8c4cfd0 100644 --- a/sysdeps/unix/sysv/linux/Makefile +++ b/sysdeps/unix/sysv/linux/Makefile @@ -43,7 +43,7 @@ sysdep_headers += sys/mount.h sys/acct.h sys/sysctl.h \ bits/mman-linux.h tests += tst-clone tst-clone2 tst-fanotify tst-personality tst-quota \ - tst-sync_file_range + tst-sync_file_range tst-syscall-template # Generate the list of SYS_* macros for the system calls (__NR_* macros). diff --git a/sysdeps/unix/sysv/linux/tst-syscall-template.c b/sysdeps/unix/sysv/linux/tst-syscall-template.c new file mode 100644 index 0000000..47e47d0 --- /dev/null +++ b/sysdeps/unix/sysv/linux/tst-syscall-template.c @@ -0,0 +1,55 @@ +/* Basic tests for syscall template errno setup. + + Copyright (C) 2016 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include +#include +#include + +static int do_test (void); +#define TEST_FUNCTION do_test () + +/* This defines the `main' function and some more. */ +#include + +static int +do_test (void) +{ + const char str[] = "Hello wold!\n"; + int err; + + errno = 0xDEAD; + + if (errno != 0xDEAD) + FAIL_EXIT1 ("Cannot access errno location"); + + /* Write at intectionally invalid file descriptor. + Function should return -1, and set errno to EBADF. */ + err = write (-1, str, sizeof (str)); + + if (err != -1) + FAIL_EXIT1 ("Unexpected write success"); + + if (errno == 0xDEAD) + FAIL_EXIT1 ("Errno is not updated"); + + if (errno != EBADF) + FAIL_EXIT1 ("Wrong error code: %d", errno); + + return 0; +}