From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by sourceware.org (Postfix) with ESMTPS id 81B143857C67 for ; Wed, 30 Sep 2020 18:29:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 81B143857C67 Received: from pps.filterd (m0098394.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 08UI21lW195826; Wed, 30 Sep 2020 14:29:31 -0400 Received: from ppma03wdc.us.ibm.com (ba.79.3fa9.ip4.static.sl-reverse.com [169.63.121.186]) by mx0a-001b2d01.pphosted.com with ESMTP id 33vwghbhh2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 30 Sep 2020 14:29:30 -0400 Received: from pps.filterd (ppma03wdc.us.ibm.com [127.0.0.1]) by ppma03wdc.us.ibm.com (8.16.0.42/8.16.0.42) with SMTP id 08UIS1Fn017105; Wed, 30 Sep 2020 18:29:29 GMT Received: from b01cxnp22036.gho.pok.ibm.com (b01cxnp22036.gho.pok.ibm.com [9.57.198.26]) by ppma03wdc.us.ibm.com with ESMTP id 33sw997p0v-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 30 Sep 2020 18:29:29 +0000 Received: from b01ledav005.gho.pok.ibm.com (b01ledav005.gho.pok.ibm.com [9.57.199.110]) by b01cxnp22036.gho.pok.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 08UITTxs14418698 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 30 Sep 2020 18:29:29 GMT Received: from b01ledav005.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 72514AE05C; Wed, 30 Sep 2020 18:29:29 +0000 (GMT) Received: from b01ledav005.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id C27F4AE060; Wed, 30 Sep 2020 18:29:28 +0000 (GMT) Received: from [9.65.230.4] (unknown [9.65.230.4]) by b01ledav005.gho.pok.ibm.com (Postfix) with ESMTP; Wed, 30 Sep 2020 18:29:28 +0000 (GMT) Subject: Re: semtimedop, powerpc, time64 and older kernels To: Adhemerval Zanella , GNU C Library References: <6f370467-8d0a-bd3d-29b2-2fefef4e475f@linux.ibm.com> From: Matheus Castanho Message-ID: <490fc1e6-fd80-c5e5-0d0f-603fed44d4b6@linux.ibm.com> Date: Wed, 30 Sep 2020 15:29:27 -0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.11.0 MIME-Version: 1.0 In-Reply-To: <6f370467-8d0a-bd3d-29b2-2fefef4e475f@linux.ibm.com> Content-Type: multipart/mixed; boundary="------------36D13D24C1F924C2890743B5" Content-Language: en-US X-TM-AS-GCONF: 00 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.235, 18.0.687 definitions=2020-09-30_09:2020-09-30, 2020-09-30 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 phishscore=0 priorityscore=1501 bulkscore=0 mlxscore=0 suspectscore=0 impostorscore=0 clxscore=1015 adultscore=0 malwarescore=0 mlxlogscore=999 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2006250000 definitions=main-2009300139 X-Spam-Status: No, score=-12.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_EF, GIT_PATCH_0, NICE_REPLY_A, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 Sep 2020 18:29:33 -0000 This is a multi-part message in MIME format. --------------36D13D24C1F924C2890743B5 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit On 9/30/20 3:01 PM, Matheus Castanho via Libc-alpha wrote: > Hi Adhemerval, > > sysvipc/test-sysvsem started failing on ppc64le on kernels older than > 5.1 after: > > commit aaa12e9ff02b32d5fbb2f367d7d6b6985a2176d6 > Author: Adhemerval Zanella > Date: Fri Sep 25 15:04:34 2020 -0300 > > sysvipc: Fix semtimeop for !__ASSUME_DIRECT_SYSVIPC_SYSCALLS > > The __NR_ipc syscall does not support 64-bit time operations. It > fixes 7c437d3778. > > Checked on i686-linux-gnu on a Linux 5.4. > > It fails with: > FAIL: sysvipc/test-sysvsem > original exit status 1 > error: test-sysvsem.c:101: semop failed (errno=38) > error: 1 test failures > > Looks like semtimedop was added on Linux 5.1, so it makes sense that > older kernels will fail with ENOSYS when calling that. So in such cases > should we also apply time convertion and fallback to semtimedop/ipc in > __semtimedop64 as done when !__ASSUME_DIRECT_SYSVIPC_SYSCALLS? -----------------^ Sorry, I meant !_ASSUME_TIME64_SYSCALLS > > The patch below seems to solve the issue, at least on ppc64le. > > Suggestions? > > Thanks, > Matheus Castanho > > --- 8< --- > > diff --git a/sysdeps/unix/sysv/linux/semtimedop.c > b/sysdeps/unix/sysv/linux/semtimedop.c > index a9ad922ee2..510fea1852 100644 > --- a/sysdeps/unix/sysv/linux/semtimedop.c > +++ b/sysdeps/unix/sysv/linux/semtimedop.c > @@ -32,7 +32,7 @@ __semtimedop64 (int semid, struct sembuf *sops, size_t > nsops, > int r = INLINE_SYSCALL_CALL (semtimedop_time64, semid, sops, nsops, > timeout); > > -#ifndef __ASSUME_TIME64_SYSCALLS > +#if !(defined __ASSUME_TIME64_SYSCALLS) || __LINUX_KERNEL_VERSION < > 0x050100 > if (r == 0 || errno != ENOSYS) > return r; > Also, looks like my email client messed up the diff *sigh*. I'm sending a proper patch attached this time. -- Matheus Castanho --------------36D13D24C1F924C2890743B5 Content-Type: text/x-patch; charset=UTF-8; name="0001-sysvipc-Fix-semtimedop-for-Linux-5.1.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="0001-sysvipc-Fix-semtimedop-for-Linux-5.1.patch" >From 1c0a497a3f986bc6980581c9eab482ccf7bb190f Mon Sep 17 00:00:00 2001 From: Matheus Castanho Date: Wed, 30 Sep 2020 14:22:18 -0300 Subject: [PATCH] sysvipc: Fix semtimedop for Linux < 5.1 Kernels older than 5.1 will fail with ENOSYS when calling semtimedop_time64 syscall in __semtimedop_time64. Just like for !__ASSUME_TIME64_SYSCALLS, we should fallback to using the old mechanism in such cases. --- sysdeps/unix/sysv/linux/semtimedop.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sysdeps/unix/sysv/linux/semtimedop.c b/sysdeps/unix/sysv/linux/semtimedop.c index a9ad922ee2..510fea1852 100644 --- a/sysdeps/unix/sysv/linux/semtimedop.c +++ b/sysdeps/unix/sysv/linux/semtimedop.c @@ -32,7 +32,7 @@ __semtimedop64 (int semid, struct sembuf *sops, size_t nsops, int r = INLINE_SYSCALL_CALL (semtimedop_time64, semid, sops, nsops, timeout); -#ifndef __ASSUME_TIME64_SYSCALLS +#if !(defined __ASSUME_TIME64_SYSCALLS) || __LINUX_KERNEL_VERSION < 0x050100 if (r == 0 || errno != ENOSYS) return r; -- 2.26.2 --------------36D13D24C1F924C2890743B5--