lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <Y6lu14VsuH1LbqFH@pendragon.ideasonboard.com>
Date:   Mon, 26 Dec 2022 11:52:23 +0200
From:   Laurent Pinchart <laurent.pinchart@...asonboard.com>
To:     Kieran Bingham <kieran.bingham@...asonboard.com>
Cc:     linux-media@...r.kernel.org,
        Mauro Carvalho Chehab <mchehab@...nel.org>,
        Sakari Ailus <sakari.ailus@...ux.intel.com>,
        Tomi Valkeinen <tomi.valkeinen@...asonboard.com>,
        Hans Verkuil <hverkuil-cisco@...all.nl>,
        Christophe JAILLET <christophe.jaillet@...adoo.fr>,
        open list <linux-kernel@...r.kernel.org>
Subject: Re: [RFC PATCH] media: v4l2-dev: sysfs: Support streaming attribute

Hi Kieran,

Thank you for the patch.

On Fri, Dec 23, 2022 at 11:17:35PM +0000, Kieran Bingham wrote:
> Provide a streaming attribute to allow userspace to interogate if a device
> is actively streaming or not.
> 
> This will allow desktop notifications to report if a camera or device
> is active on the system, rather than just 'open' which can occur when
> configuring the device.
> 
> Bug: https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/2669
> Signed-off-by: Kieran Bingham <kieran.bingham@...asonboard.com>
> ---
> 
> This is a quick POC to see if such a facility makes sense.
> I'm weary that not all video devices may have the queues registered on
> the struct video_device, but this seems like an effective way to be able
> to determine if a device is actively streaming on a system.

I can imagine multiple problems, from race conditions to permissions and
privacy. In order to comment on the fitness of this solution to address
the problem you're trying to solve, could you describe the actual
problem ?

>  Documentation/ABI/stable/sysfs-class-video |  9 +++++++++
>  MAINTAINERS                                |  1 +
>  drivers/media/v4l2-core/v4l2-dev.c         | 13 +++++++++++++
>  3 files changed, 23 insertions(+)
>  create mode 100644 Documentation/ABI/stable/sysfs-class-video
> 
> diff --git a/Documentation/ABI/stable/sysfs-class-video b/Documentation/ABI/stable/sysfs-class-video
> new file mode 100644
> index 000000000000..99dd27475a92
> --- /dev/null
> +++ b/Documentation/ABI/stable/sysfs-class-video
> @@ -0,0 +1,9 @@
> +What:		/sys/class/video4linux/video<n>/streaming
> +Date:		January 2023
> +KernelVersion:	6.3
> +Contact:	Kieran Bingham <kieran.bingham@...asonboard.com>
> +Description:
> +		Indicates if the video device has an actively streaming queue.
> +		This may indicate that the device is capturing or outputing
> +		video data.
> +Users:
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 11987154eeee..8449f5a6c0da 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -12867,6 +12867,7 @@ S:	Maintained
>  W:	https://linuxtv.org
>  Q:	http://patchwork.kernel.org/project/linux-media/list/
>  T:	git git://linuxtv.org/media_tree.git
> +F:	Documentation/ABI/stable/sysfs-class-video
>  F:	Documentation/admin-guide/media/
>  F:	Documentation/devicetree/bindings/media/
>  F:	Documentation/driver-api/media/
> diff --git a/drivers/media/v4l2-core/v4l2-dev.c b/drivers/media/v4l2-core/v4l2-dev.c
> index 397d553177fa..7d800309d076 100644
> --- a/drivers/media/v4l2-core/v4l2-dev.c
> +++ b/drivers/media/v4l2-core/v4l2-dev.c
> @@ -30,6 +30,7 @@
>  #include <media/v4l2-device.h>
>  #include <media/v4l2-ioctl.h>
>  #include <media/v4l2-event.h>
> +#include <media/videobuf2-core.h>
>  
>  #define VIDEO_NUM_DEVICES	256
>  #define VIDEO_NAME              "video4linux"
> @@ -85,7 +86,19 @@ static ssize_t name_show(struct device *cd,
>  }
>  static DEVICE_ATTR_RO(name);
>  
> +static ssize_t streaming_show(struct device *cd,
> +			      struct device_attribute *attr, char *buf)
> +{
> +	struct video_device *vdev = to_video_device(cd);
> +
> +	int active = vdev->queue ? vb2_is_streaming(vdev->queue) : false;
> +
> +	return sprintf(buf, "%s\n", active ? "active" : "inactive");
> +}
> +static DEVICE_ATTR_RO(streaming);
> +
>  static struct attribute *video_device_attrs[] = {
> +	&dev_attr_streaming.attr,
>  	&dev_attr_name.attr,
>  	&dev_attr_dev_debug.attr,
>  	&dev_attr_index.attr,

-- 
Regards,

Laurent Pinchart

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ