From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ua1-x92c.google.com (mail-ua1-x92c.google.com [IPv6:2607:f8b0:4864:20::92c]) by sourceware.org (Postfix) with ESMTPS id 3B78C3857351 for ; Thu, 29 Sep 2022 19:07:57 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 3B78C3857351 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linaro.org Received: by mail-ua1-x92c.google.com with SMTP id e3so899334uax.4 for ; Thu, 29 Sep 2022 12:07:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:in-reply-to:organization:from:references :to:content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date; bh=JTs0AD3eT6NxopeEzdjXItFsktqqBXMHzLoC/HDWeOE=; b=QGjyWep8PdJCjGMuzCCv7EhUBzrDebkMFdUY2bQDTUtrnUl5ttw3YcEBy8/PMZTexs 5yOJQAF/0FP3XZfiC40pOrYzGFtbEymmu7w5TQ1hpVISHjS+5/Doym1XOYM1D9kOujbF BecSfogTvHdiegnPH6X8D8hBBLVYGbFe5Akg8LX5TNrqslc95+nO44CJSGTq0XODrX04 I11Jyeh4zk34E225k51PcnyG4kt0hCfxCQKFJ+L8iZKKBv8qbWh8OIeJ+owI/ubHIIKQ eHioRqHJ6sBf/HEThG+VUZkMUf3DFOP9rmHRfBhEpb2Qb4zfJLFL3PYnNWJkXscqFZEM qVaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:in-reply-to:organization:from:references :to:content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date; bh=JTs0AD3eT6NxopeEzdjXItFsktqqBXMHzLoC/HDWeOE=; b=nObSkBeW9ht98t5/3mThidET+Jd22LmlnXFb2TYRp7zgqlwVjhN3bJCYg2cNKvFxUl J642XVe9hO5UIGtc4hj7UxidrUaYXd+tjrqbEz1YiVgnhayp3Mi7GqhxuqmcryOtBn8X u4z1Z8g/HIvNxiehjzS0tIqe1YGHUDoezrO5PwH/jIsSLsbG5YS3sAla2PdV8i9pl/BI wWvtWmPtQHtNJ3nIkDgSi0nSjAZXMkGbFCEPp69DRJoBnkUP6cQ1qHQxZkeFJA/xlFBh alZRX1pBqIn+hmcxgjaK+DIHSos4nBmRvpMusNFha51/MDeGbOQhp/l2lW26r02N1lt+ k3aQ== X-Gm-Message-State: ACrzQf3VQoaGqBPQLl8w0I3ujuwdMHWwtqUE0rVR5wFYNFk9ad3QM1+U NJ4x9RqL04BORUPQZxBaXuRWNg== X-Google-Smtp-Source: AMsMyM7g7uvZuTKfZ9w+aiuN7/wEXJFMhf0bSw5oI5VbOFbwQEqbWXoQwxruVW6unYper1iL+ROHAA== X-Received: by 2002:ab0:5711:0:b0:3b5:13e0:23b4 with SMTP id s17-20020ab05711000000b003b513e023b4mr2962068uaa.101.1664478475818; Thu, 29 Sep 2022 12:07:55 -0700 (PDT) Received: from ?IPV6:2804:1b3:a7c2:3736:1cf0:b6ef:db77:c498? ([2804:1b3:a7c2:3736:1cf0:b6ef:db77:c498]) by smtp.gmail.com with ESMTPSA id u28-20020ab0555c000000b003d27b3d3fdfsm158137uaa.5.2022.09.29.12.07.54 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 29 Sep 2022 12:07:55 -0700 (PDT) Message-ID: <731f55a7-6538-e59a-6bcb-f0c8e829e086@linaro.org> Date: Thu, 29 Sep 2022 16:07:53 -0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.3.1 Subject: Re: [PATCH v2] malloc: Do not clobber errno on __getrandom_nocancel (BZ#29624) Content-Language: en-US To: Wilco Dijkstra , "libc-alpha@sourceware.org" , Yu Chien Peter Lin , Yann Droneaud References: <20220929175526.2596756-1-adhemerval.zanella@linaro.org> From: Adhemerval Zanella Netto Organization: Linaro In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-15.0 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP 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 29/09/22 15:36, Wilco Dijkstra wrote: > Hi Adhemerval, > > Another question, the syscall is defined as: > > ssize_t getrandom (void *__buffer, size_t __length, > > Doesn't this mean if we use 'int' for the return value, a large but valid syscall > result could be interpreted as a negative error value? It sounds like all code > processing the getrandom syscall should use ssize_t rather than int. Or do we > limit length to something fairly small? Yeah, you are right. The syscall indeed returns ssize_t/long: include/linux/syscalls.h:1007:asmlinkage long sys_getrandom(char __user *buf, size_t count, So it does make sense to use ssize_t. It seems that not all architectures handle INTERNAL_SYSCALL consistently to use 'long', but at least the 64 bits does. It also handles the issue raised by Yann, where arc4random fallback is not used. This is in fact another issue and I will send an independently patch. > >  __arc4random_buf (void *p, size_t n) >  { >    static int seen_initialized; > -  size_t l; > +  int l; > > Should be ssize_t? > > +static inline int > +__getrandom_nocancel (void *buf, size_t buflen, unsigned int flags) > > ssize_t? > > +{ > +  int save_errno = errno; > +  int r = __getrandom (buf, buflen, flags); > > ssize_t? > > +  r = r == -1 ? -errno : r; > +  __set_errno (save_errno); > +  return r; > +} >   >  #define __poll_infinity_nocancel(fds, nfds) \ >    __poll (fds, nfds, -1) > diff --git a/sysdeps/unix/sysv/linux/not-cancel.h b/sysdeps/unix/sysv/linux/not-cancel.h > index a263d294b1..00ab75a405 100644 > --- a/sysdeps/unix/sysv/linux/not-cancel.h > +++ b/sysdeps/unix/sysv/linux/not-cancel.h > @@ -71,7 +71,7 @@ __writev_nocancel_nostatus (int fd, const struct iovec *iov, int iovcnt) >  static inline int > > ssize_t? > >  __getrandom_nocancel (void *buf, size_t buflen, unsigned int flags) >  { > -  return INLINE_SYSCALL_CALL (getrandom, buf, buflen, flags); > +  return INTERNAL_SYSCALL_CALL (getrandom, buf, buflen, flags); >  } > > Cheers, > Wilco