delorie.com/archives/browse.cgi | search |
X-Authentication-Warning: | delorie.com: mail set sender to djgpp-bounces using -f |
X-Recipient: | djgpp AT delorie DOT com |
X-Recipient: | dj AT delorie DOT com |
X-Original-DKIM-Signature: | v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; |
s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: | |
mime-version; bh=hpHRCmgYnMmchdaodbfHJ6TxssNisaahhszm/YyGB5o=; b=IK99nHlqDJVZ | |
j7iGBCnhmjG9iu+oaFIJ9C2tDtl8WlqelFiBXzzq8iXPMKIsdcC8I98qOskesGVvsiayyWoMvicAY | |
mJHsp+kVJYbUa/GJDGlqOOh8PsI3grXSZycGzJkKlTTPLsz1Hstm4zjZblWNn9MMSCpa86eC0GM8X | |
qFks8a3DHQk3zhAKJ88EZT2K3UCJO2yGmmZfyJ43vqRGVcvyrmFU6PRKkRUv3HnaZUyajg/Rb4Ama | |
RUX5BIHZ4+9pEdvLRdOLYsy0Ic8a5n+f8R2nonf/9Jp7iWy/93LCs+wDbp94150mg+5tycgBWQUey | |
lkLJZ2XRxcxm7deYqUgFWw==; | |
Date: | Sat, 11 May 2024 14:24:05 +0300 |
Message-Id: | <86zfsw1tii.fsf@gnu.org> |
From: | "Eli Zaretskii (eliz AT gnu DOT org) [via djgpp AT delorie DOT com]" <djgpp AT delorie DOT com> |
To: | Pali <pali AT pali DOT im> |
Cc: | dj AT delorie DOT com, djgpp AT delorie DOT com |
In-Reply-To: | <20240511110655.rux4ltfvw62xzrdm@pali> (message from Pali on Sat, |
11 May 2024 13:06:55 +0200) | |
Subject: | Re: Fix passing fcntl and ioctl variadic arguments to file system |
extension API | |
References: | <20240509182019 DOT mrbfcyv4jhl3w34x AT pali> |
<867cg03azy DOT fsf AT gnu DOT org> <20240511110655 DOT rux4ltfvw62xzrdm AT pali> | |
Reply-To: | djgpp AT delorie DOT com |
Errors-To: | nobody AT delorie DOT com |
X-Mailing-List: | djgpp AT delorie DOT com |
X-Unsubscribes-To: | listserv AT delorie DOT com |
> Date: Sat, 11 May 2024 13:06:55 +0200 > From: Pali <pali AT pali DOT im> > Cc: DJ Delorie <dj AT delorie DOT com>, djgpp AT delorie DOT com > > __FSEXT_Function *func = __FSEXT_get_function(fd); > if(func) > { > int rv; > if (__FSEXT_func_wrapper(func, __FSEXT_ioctl, &rv, fd)) > return rv; > } > > What can happen is: > > 1) fd is not of fsext type > - func is NULL and the fsext condition is skipped > - _unix_ioctl continue > > 2) fs is of fsext type and fsext function success > - func is called and then "return rv" is called > - _unix_ioctl finish execution > > 3) fs is of fsext type but fsext function does not handle _unix_ioctl > - func is executed but returns false > - _unix_ioctl continue > > But option 2 cannot happen because during execution of ioctl function > (before it passed control to _unix_ioctl function) it was already > checked that fd is either not of fsext type OR fsext does not have > particular ioctl code. > > So what can happen is either option 1 or 3. Which means that fsext > cannot handle particular ioctl code and so I think that it does not make > sense to call fsext function. So if we ever change the calling code to do something that would invalidate the conclusion that the two calls to __FSEXT_func_wrapper do exactly the same, Someone(TM) will need to remember to go back and reinstate the removed call? Is that reasonable? But if DJ agrees with you, I won't argue.
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |