Message ID | 20241209185904.507350-1-zfigura@codeweavers.com (mailing list archive) |
---|---|
Headers | show |
Series | NT synchronization primitive driver | expand |
On Mon, Dec 9, 2024, at 19:58, Elizabeth Figura wrote: > == Previous versions == > > No changes were made from v5 other than rebasing on top of the 6.13-rc1 > char-misc-next tree. > > I would like to repeat a question from the last round of review, though. Two > changes were suggested related to API design, which I did not make because the > APIs in question were already released in upstream Linux. However, the driver is > also completely nonfunctional and hidden behind BROKEN, so would this be > acceptable anyway? The changes in question are: If it was impossible to use the driver, there is no regression. I feel the entire point of marking it as broken was to be able to add that type of change. > * rename NTSYNC_IOC_SEM_POST to NTSYNC_IOC_SEM_RELEASE (matching the NT > terminology instead of POSIX), No objections my me on either name. > * change object creation ioctls to return the fds directly in the return value > instead of through the args struct. I would also still appreciate a > clarification on the advice in [1], which is why I didn't do this in the first > place. > > [1] https://docs.kernel.org/driver-api/ioctl.html#return-code The git log tells me that I have written that, but I don't remember why I put that in, maybe someone else suggested it. My feeling right now is that returning a file descriptor number as a small positive integer from the ioctl() return code makes sense. On the other hand, returning pointers, negative signed integers or large (> 32bit) 'unsigned long' values can cause a number of issues, so I would avoid all those the same way we discourage passing those integers as a literal 'arg' into ioctl() instead of going through a pointer. So either way, this looks good to me. I also looked through the series again to double-check that you avoid the usual common problems we list in Documentation/driver-api/ioctl.rst, and I found this is all fine. So with or without the two changes you listed: Acked-by: Arnd Bergmann <arnd@arndb.de> Arnd
On Monday, 9 December 2024 14:24:36 CST Arnd Bergmann wrote: > On Mon, Dec 9, 2024, at 19:58, Elizabeth Figura wrote: > > == Previous versions == > > > > No changes were made from v5 other than rebasing on top of the 6.13-rc1 > > char-misc-next tree. > > > > I would like to repeat a question from the last round of review, though. Two > > changes were suggested related to API design, which I did not make because the > > APIs in question were already released in upstream Linux. However, the driver is > > also completely nonfunctional and hidden behind BROKEN, so would this be > > acceptable anyway? The changes in question are: > > If it was impossible to use the driver, there is no regression. > I feel the entire point of marking it as broken was to be able > to add that type of change. Makes sense. [I figured that the BROKEN was just there to prevent anyone from trying to use a half-finished driver, and the point of committing a half-finished driver was just to reduce the number of patches that needed to be resent.] I'll make these changes and resend. > > * rename NTSYNC_IOC_SEM_POST to NTSYNC_IOC_SEM_RELEASE (matching the NT > > terminology instead of POSIX), > > No objections my me on either name. > > > * change object creation ioctls to return the fds directly in the return value > > instead of through the args struct. I would also still appreciate a > > clarification on the advice in [1], which is why I didn't do this in the first > > place. > > > > [1] https://docs.kernel.org/driver-api/ioctl.html#return-code > > The git log tells me that I have written that, but I don't remember > why I put that in, maybe someone else suggested it. > > My feeling right now is that returning a file descriptor number > as a small positive integer from the ioctl() return code makes > sense. On the other hand, returning pointers, negative signed > integers or large (> 32bit) 'unsigned long' values can cause > a number of issues, so I would avoid all those the same way we > discourage passing those integers as a literal 'arg' into ioctl() > instead of going through a pointer. Ah, that makes sense to me, thanks.
On Mon, Dec 09, 2024 at 12:58:36PM -0600, Elizabeth Figura wrote: > I would like to repeat a question from the last round of review, though. Two > changes were suggested related to API design, which I did not make because the > APIs in question were already released in upstream Linux. However, the driver is > also completely nonfunctional and hidden behind BROKEN, so would this be > acceptable anyway? The changes in question are: > > * rename NTSYNC_IOC_SEM_POST to NTSYNC_IOC_SEM_RELEASE (matching the NT > terminology instead of POSIX), > > * change object creation ioctls to return the fds directly in the return value > instead of through the args struct. I would also still appreciate a > clarification on the advice in [1], which is why I didn't do this in the first > place. I see no problem making those changes; esp. since Arnd doesn't seem to object to the latter. > Elizabeth Figura (28): > ntsync: Introduce NTSYNC_IOC_WAIT_ANY. > ntsync: Introduce NTSYNC_IOC_WAIT_ALL. > ntsync: Introduce NTSYNC_IOC_CREATE_MUTEX. > ntsync: Introduce NTSYNC_IOC_MUTEX_UNLOCK. > ntsync: Introduce NTSYNC_IOC_MUTEX_KILL. > ntsync: Introduce NTSYNC_IOC_CREATE_EVENT. > ntsync: Introduce NTSYNC_IOC_EVENT_SET. > ntsync: Introduce NTSYNC_IOC_EVENT_RESET. > ntsync: Introduce NTSYNC_IOC_EVENT_PULSE. > ntsync: Introduce NTSYNC_IOC_SEM_READ. > ntsync: Introduce NTSYNC_IOC_MUTEX_READ. > ntsync: Introduce NTSYNC_IOC_EVENT_READ. > ntsync: Introduce alertable waits. Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>