From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by sourceware.org (Postfix) with ESMTP id 469D53851C1F for ; Thu, 29 Apr 2021 07:44:58 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 469D53851C1F Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-563-b3Q9oUJrPUaPiezplpyh3A-1; Thu, 29 Apr 2021 03:44:55 -0400 X-MC-Unique: b3Q9oUJrPUaPiezplpyh3A-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 64EEF8026AC; Thu, 29 Apr 2021 07:44:54 +0000 (UTC) Received: from oldenburg.str.redhat.com (ovpn-113-20.ams2.redhat.com [10.36.113.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 2F00F6E510; Thu, 29 Apr 2021 07:44:52 +0000 (UTC) From: Florian Weimer To: Martin Sebor Cc: Joseph Myers , Martin Sebor via Libc-alpha Subject: Re: [PATCH] add attribute none to pthread_setspecific (BZ #27714) References: <2ec7fadb-cc15-a005-f708-d2adecc8cc39@gmail.com> <875z08qqy8.fsf@oldenburg.str.redhat.com> <571eb466-8979-8579-3b52-38f29a628a39@gmail.com> <47fc35d1-05b0-c02e-77dc-b3193aefd865@gmail.com> <8e311d8e-2b4a-06af-b086-7beb0e494422@gmail.com> <87eeeulv93.fsf@oldenburg.str.redhat.com> Date: Thu, 29 Apr 2021 09:45:24 +0200 In-Reply-To: (Martin Sebor's message of "Wed, 28 Apr 2021 08:49:33 -0600") Message-ID: <878s51h6uj.fsf@oldenburg.str.redhat.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain X-Spam-Status: No, score=-12.5 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, 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: Thu, 29 Apr 2021 07:45:00 -0000 * Martin Sebor: > On 4/28/21 1:32 AM, Florian Weimer wrote: >> * Martin Sebor: >> >>> diff --git a/nptl/tst-tsd3.c b/nptl/tst-tsd3.c >>> index 0dd39ccb2b..45c7e4e1ea 100644 >>> --- a/nptl/tst-tsd3.c >>> +++ b/nptl/tst-tsd3.c >>> @@ -37,7 +37,8 @@ destr1 (void *arg) >>> { >>> puts ("set key2"); >>> - if (pthread_setspecific (key2, (void *) 1l) != 0) >>> + /* Use an arbirary but valid pointer to avoid GCC warnings. */ >>> + if (pthread_setspecific (key2, (void *) &left) != 0) >>> { >>> puts ("destr1: setspecific failed"); >>> exit (1); >>> @@ -53,7 +54,8 @@ destr2 (void *arg) >>> { >>> puts ("set key1"); >>> - if (pthread_setspecific (key1, (void *) 1l) != 0) >>> + /* Use an arbirary but valid pointer to avoid GCC warnings. */ >>> + if (pthread_setspecific (key1, (void *) &left) != 0) >>> { >>> puts ("destr2: setspecific failed"); >>> exit (1); >> Sorry, this is clearly a bug in attribute access (none). No access >> should mean no access, not access to one byte, as the warning currently >> implies. > > It's not a bug. Access none was introduced as a check whether > the object has the expected size without assuming it's written > to or read from (each access mode has its own checks). Pointers > to void are treated as char*. This was documented in the GCC 10 > manual when attribute access was first added and hasn't changed > with GCC 11. > > The motivating use case for access none was a Linux kernel API > (I think check_copy_size) used to verify that a pointer points > to an object with the expected size. But pthread_setspecific does not perform any address range validity checks, so an attribute that implies some validation of the pointer target is not correct. Is it possible to set the data size as 0? Thanks, Florian