From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: Elizabeth Figura <zfigura@codeweavers.com>
Cc: "Arnd Bergmann" <arnd@arndb.de>,
"Jonathan Corbet" <corbet@lwn.net>,
"Shuah Khan" <shuah@kernel.org>,
linux-kernel@vger.kernel.org, linux-api@vger.kernel.org,
wine-devel@winehq.org, "André Almeida" <andrealmeid@igalia.com>,
"Wolfram Sang" <wsa@kernel.org>,
"Arkadiusz Hiler" <ahiler@codeweavers.com>,
"Peter Zijlstra" <peterz@infradead.org>,
"Andy Lutomirski" <luto@kernel.org>,
linux-doc@vger.kernel.org, linux-kselftest@vger.kernel.org
Subject: Re: [PATCH 02/31] ntsync: Introduce NTSYNC_IOC_CREATE_SEM.
Date: Thu, 15 Feb 2024 08:28:32 +0100 [thread overview]
Message-ID: <2024021533-thicken-handed-7d2d@gregkh> (raw)
In-Reply-To: <20240214233645.9273-3-zfigura@codeweavers.com>
On Wed, Feb 14, 2024 at 05:36:38PM -0600, Elizabeth Figura wrote:
> This corresponds to the NT syscall NtCreateSemaphore().
>
> Semaphores are one of three types of object to be implemented in this driver,
> the others being mutexes and events.
>
> An NT semaphore contains a 32-bit counter, and is signaled and can be acquired
> when the counter is nonzero. The counter has a maximum value which is specified
> at creation time. The initial value of the semaphore is also specified at
> creation time. There are no restrictions on the maximum and initial value.
>
> Each object is exposed as an file, to which any number of fds may be opened.
> When all fds are closed, the object is deleted.
>
> Signed-off-by: Elizabeth Figura <zfigura@codeweavers.com>
> ---
> .../userspace-api/ioctl/ioctl-number.rst | 2 +
> drivers/misc/ntsync.c | 120 ++++++++++++++++++
> include/uapi/linux/ntsync.h | 21 +++
> 3 files changed, 143 insertions(+)
> create mode 100644 include/uapi/linux/ntsync.h
>
> diff --git a/Documentation/userspace-api/ioctl/ioctl-number.rst b/Documentation/userspace-api/ioctl/ioctl-number.rst
> index 457e16f06e04..2f5c6994f042 100644
> --- a/Documentation/userspace-api/ioctl/ioctl-number.rst
> +++ b/Documentation/userspace-api/ioctl/ioctl-number.rst
> @@ -173,6 +173,8 @@ Code Seq# Include File Comments
> 'M' 00-0F drivers/video/fsl-diu-fb.h conflict!
> 'N' 00-1F drivers/usb/scanner.h
> 'N' 40-7F drivers/block/nvme.c
> +'N' 80-8F uapi/linux/ntsync.h NT synchronization primitives
> + <mailto:wine-devel@winehq.org>
> 'O' 00-06 mtd/ubi-user.h UBI
> 'P' all linux/soundcard.h conflict!
> 'P' 60-6F sound/sscape_ioctl.h conflict!
> diff --git a/drivers/misc/ntsync.c b/drivers/misc/ntsync.c
> index e4969ef90722..3ad86d98b82d 100644
> --- a/drivers/misc/ntsync.c
> +++ b/drivers/misc/ntsync.c
> @@ -5,26 +5,146 @@
> * Copyright (C) 2024 Elizabeth Figura
> */
>
> +#include <linux/anon_inodes.h>
> +#include <linux/file.h>
> #include <linux/fs.h>
> #include <linux/miscdevice.h>
> #include <linux/module.h>
> +#include <linux/slab.h>
> +#include <uapi/linux/ntsync.h>
>
> #define NTSYNC_NAME "ntsync"
>
> +enum ntsync_type {
> + NTSYNC_TYPE_SEM,
> +};
> +
> +struct ntsync_obj {
> + enum ntsync_type type;
> +
> + union {
> + struct {
> + __u32 count;
> + __u32 max;
> + } sem;
> + } u;
> +
> + struct file *file;
> + struct ntsync_device *dev;
> +};
> +
> +struct ntsync_device {
> + struct file *file;
> +};
No reference counting is needed for your ntsync_device? Or are you
relying on the reference counting of struct file here?
You pass around pointers to this structure, and save it off into other
structures, how do you know it is "safe" to do so?
thanks,
greg k-h
next prev parent reply other threads:[~2024-02-15 7:28 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-14 23:36 [PATCH 00/31] NT synchronization primitive driver Elizabeth Figura
2024-02-14 23:36 ` [PATCH 01/31] ntsync: Introduce the ntsync driver and character device Elizabeth Figura
2024-02-15 1:57 ` Randy Dunlap
2024-02-15 19:04 ` Elizabeth Figura
2024-02-14 23:36 ` [PATCH 02/31] ntsync: Introduce NTSYNC_IOC_CREATE_SEM Elizabeth Figura
2024-02-15 7:28 ` Greg Kroah-Hartman [this message]
2024-02-15 19:22 ` Elizabeth Figura
2024-02-17 8:03 ` Greg Kroah-Hartman
2024-02-19 19:02 ` Elizabeth Figura
2024-02-14 23:36 ` [PATCH 03/31] ntsync: Introduce NTSYNC_IOC_SEM_POST Elizabeth Figura
2024-02-14 23:36 ` [PATCH 04/31] ntsync: Introduce NTSYNC_IOC_WAIT_ANY Elizabeth Figura
2024-02-14 23:36 ` [PATCH 05/31] ntsync: Introduce NTSYNC_IOC_WAIT_ALL Elizabeth Figura
2024-02-14 23:36 ` [PATCH 06/31] ntsync: Introduce NTSYNC_IOC_CREATE_MUTEX Elizabeth Figura
2024-02-14 23:36 ` [PATCH 07/31] ntsync: Introduce NTSYNC_IOC_MUTEX_UNLOCK Elizabeth Figura
2024-02-14 23:36 ` [PATCH 08/31] ntsync: Introduce NTSYNC_IOC_MUTEX_KILL Elizabeth Figura
2024-02-14 23:36 ` [PATCH 09/31] ntsync: Introduce NTSYNC_IOC_CREATE_EVENT Elizabeth Figura
2024-02-14 23:52 ` [PATCH 10/31] ntsync: Introduce NTSYNC_IOC_EVENT_SET Elizabeth Figura
2024-02-14 23:52 ` [PATCH 11/31] ntsync: Introduce NTSYNC_IOC_EVENT_RESET Elizabeth Figura
2024-02-14 23:52 ` [PATCH 12/31] ntsync: Introduce NTSYNC_IOC_EVENT_PULSE Elizabeth Figura
2024-02-14 23:52 ` [PATCH 13/31] ntsync: Introduce NTSYNC_IOC_SEM_READ Elizabeth Figura
2024-02-14 23:52 ` [PATCH 14/31] ntsync: Introduce NTSYNC_IOC_MUTEX_READ Elizabeth Figura
2024-02-14 23:52 ` [PATCH 15/31] ntsync: Introduce NTSYNC_IOC_EVENT_READ Elizabeth Figura
2024-02-14 23:52 ` [PATCH 16/31] ntsync: Introduce alertable waits Elizabeth Figura
2024-02-14 23:52 ` [PATCH 17/31] ntsync: Allow waits to use the REALTIME clock Elizabeth Figura
2024-02-14 23:52 ` [PATCH 18/31] selftests: ntsync: Add some tests for semaphore state Elizabeth Figura
2024-02-14 23:52 ` [PATCH 19/31] selftests: ntsync: Add some tests for mutex state Elizabeth Figura
2024-02-14 23:52 ` [PATCH 20/31] selftests: ntsync: Add some tests for NTSYNC_IOC_WAIT_ANY Elizabeth Figura
2024-02-14 23:52 ` [PATCH 21/31] selftests: ntsync: Add some tests for NTSYNC_IOC_WAIT_ALL Elizabeth Figura
2024-02-14 23:52 ` [PATCH 22/31] selftests: ntsync: Add some tests for wakeup signaling with WINESYNC_IOC_WAIT_ANY Elizabeth Figura
2024-02-14 23:52 ` [PATCH 23/31] selftests: ntsync: Add some tests for wakeup signaling with WINESYNC_IOC_WAIT_ALL Elizabeth Figura
2024-02-14 23:52 ` [PATCH 24/31] selftests: ntsync: Add some tests for manual-reset event state Elizabeth Figura
2024-02-14 23:53 ` [PATCH 25/31] selftests: ntsync: Add some tests for auto-reset " Elizabeth Figura
2024-02-14 23:53 ` [PATCH 26/31] selftests: ntsync: Add some tests for wakeup signaling with events Elizabeth Figura
2024-02-14 23:53 ` [PATCH 27/31] selftests: ntsync: Add tests for alertable waits Elizabeth Figura
2024-02-14 23:53 ` [PATCH 28/31] selftests: ntsync: Add some tests for wakeup signaling via alerts Elizabeth Figura
2024-02-14 23:53 ` [PATCH 29/31] selftests: ntsync: Add a stress test for contended waits Elizabeth Figura
2024-02-14 23:53 ` [PATCH 30/31] maintainers: Add an entry for ntsync Elizabeth Figura
2024-02-14 23:53 ` [PATCH 31/31] docs: ntsync: Add documentation for the ntsync uAPI Elizabeth Figura
2024-02-15 0:01 ` [PATCH 00/31] NT synchronization primitive driver Elizabeth Figura
2024-02-15 7:24 ` Greg Kroah-Hartman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2024021533-thicken-handed-7d2d@gregkh \
--to=gregkh@linuxfoundation.org \
--cc=ahiler@codeweavers.com \
--cc=andrealmeid@igalia.com \
--cc=arnd@arndb.de \
--cc=corbet@lwn.net \
--cc=linux-api@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=luto@kernel.org \
--cc=peterz@infradead.org \
--cc=shuah@kernel.org \
--cc=wine-devel@winehq.org \
--cc=wsa@kernel.org \
--cc=zfigura@codeweavers.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox