From nobody Sat Sep 13 19:27:24 2025 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4cPLsk4DJSz67Q6G; Sat, 13 Sep 2025 19:27:38 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4cPLsk0jpwz3P2q; Sat, 13 Sep 2025 19:27:37 +0000 (UTC) (envelope-from kostikbel@gmail.com) Authentication-Results: mx1.freebsd.org; none Received: from tom.home (kib@localhost [127.0.0.1] (may be forged)) by kib.kiev.ua (8.18.1/8.18.1) with ESMTP id 58DJROJ0061984; Sat, 13 Sep 2025 22:27:27 +0300 (EEST) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.10.3 kib.kiev.ua 58DJROJ0061984 Received: (from kostik@localhost) by tom.home (8.18.1/8.18.1/Submit) id 58DJROqT061983; Sat, 13 Sep 2025 22:27:24 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Sat, 13 Sep 2025 22:27:24 +0300 From: Konstantin Belousov To: Gleb Popov Cc: kib@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: fd9e09cb2ab0 - main - kern: replace several EBADF with EINVAL Message-ID: References: List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_ADSP_CUSTOM_MED,FORGED_GMAIL_RCVD,FREEMAIL_FROM, NML_ADSP_CUSTOM_MED autolearn=no autolearn_force=no version=4.0.1 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on tom.home X-Spamd-Bar: ---- X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:6939, ipnet:2001:470::/32, country:US] X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Rspamd-Queue-Id: 4cPLsk0jpwz3P2q On Sat, Sep 13, 2025 at 09:55:52PM +0300, Gleb Popov wrote: > This change affects following code inside the Qt library: > https://github.com/qt/qtbase/blob/d6cc7562689d8a07bc933178ea367706ca38e4ac/src/3rdparty/forkfd/forkfd.c#L902 > > The code in question expects to receive EBADF when being fed a wrong > type of the descriptor. Returning EINVAL makes sense to me, so maybe > we should patch Qt rather than revert this change? It is really weird code, calling pdgetpid(2) on random fds. Anyway, please confirm that the following revert makes the problem go away. BTW, would it be useful to implement something like waitid(P_PROCDESC) to eliminate the ugly code you pointed to? commit 4b47521ce2bc4ede52611c268d00ceb1608d959e Author: Konstantin Belousov Date: Sat Sep 13 22:23:27 2025 +0300 pdgetpid(2): switch back returning EBADF for non-procdesc fd This partially reverts fd9e09cb2ab0, since apparently QT depends on this specific error code. It seems that it applies pdgetpid() to random fds and filters non-procdescs by checking errno for EBADF. Reported by: gleb Sponsored by: The FreeBSD Foundation MFC after: 1 week diff --git a/sys/kern/sys_procdesc.c b/sys/kern/sys_procdesc.c index 54b03fc82c90..acaf1241cb2e 100644 --- a/sys/kern/sys_procdesc.c +++ b/sys/kern/sys_procdesc.c @@ -175,7 +175,7 @@ kern_pdgetpid(struct thread *td, int fd, const cap_rights_t *rightsp, if (error) return (error); if (fp->f_type != DTYPE_PROCDESC) { - error = EINVAL; + error = EBADF; goto out; } *pidp = procdesc_pid(fp);