[v3,1/1] media: tc358743: register v4l2 async device only after successful setup

Message ID 20240110090111.458115-1-alexander.stein@ew.tq-group.com (mailing list archive)
State Under Review
Delegated to: Sakari Ailus
Headers
Series [v3,1/1] media: tc358743: register v4l2 async device only after successful setup |

Commit Message

Alexander Stein Jan. 10, 2024, 9:01 a.m. UTC
  Ensure the device has been setup correctly before registering the v4l2
async device, thus allowing userspace to access.

Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com>
Reviewed-by: Robert Foss <rfoss@kernel.org>
---
Changes in v3:
* Added Robert's S-o-b

Change in v2:
* New approach: Register async device as last step

This superseeds the patch at [1], but has a different subject due to new
solution.

[1] https://lore.kernel.org/linux-media/20230502140612.2256850-1-alexander.stein@ew.tq-group.com/

 drivers/media/i2c/tc358743.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)
  

Comments

Sakari Ailus Jan. 17, 2024, 11:28 a.m. UTC | #1
Hi Alexander,

On Wed, Jan 10, 2024 at 10:01:11AM +0100, Alexander Stein wrote:
> Ensure the device has been setup correctly before registering the v4l2
> async device, thus allowing userspace to access.
> 
> Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com>
> Reviewed-by: Robert Foss <rfoss@kernel.org>

This should be backported to the stable trees. I'll add Cc: stable.

The patch seems to co-incidentally fix error handling, too. :-)
  
Sakari Ailus Jan. 17, 2024, 11:29 a.m. UTC | #2
On Wed, Jan 17, 2024 at 11:28:03AM +0000, Sakari Ailus wrote:
> Hi Alexander,
> 
> On Wed, Jan 10, 2024 at 10:01:11AM +0100, Alexander Stein wrote:
> > Ensure the device has been setup correctly before registering the v4l2
> > async device, thus allowing userspace to access.
> > 
> > Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com>
> > Reviewed-by: Robert Foss <rfoss@kernel.org>
> 
> This should be backported to the stable trees. I'll add Cc: stable.
> 
> The patch seems to co-incidentally fix error handling, too. :-)

I'll also add:

Fixes: 4c5211a10039 ("[media] tc358743: register v4l2 asynchronous subdevice")
  
Alexander Stein Jan. 17, 2024, 12:09 p.m. UTC | #3
Hi Sakari,

Am Mittwoch, 17. Januar 2024, 12:29:57 CET schrieb Sakari Ailus:
> On Wed, Jan 17, 2024 at 11:28:03AM +0000, Sakari Ailus wrote:
> > Hi Alexander,
> > 
> > On Wed, Jan 10, 2024 at 10:01:11AM +0100, Alexander Stein wrote:
> > > Ensure the device has been setup correctly before registering the v4l2
> > > async device, thus allowing userspace to access.
> > > 
> > > Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com>
> > > Reviewed-by: Robert Foss <rfoss@kernel.org>
> > 
> > This should be backported to the stable trees. I'll add Cc: stable.
> > 
> > The patch seems to co-incidentally fix error handling, too. :-)
> 
> I'll also add:
> 
> Fixes: 4c5211a10039 ("[media] tc358743: register v4l2 asynchronous
> subdevice")

Agreed. Thanks
Alexander
  
Robert Foss Jan. 22, 2024, 3:44 p.m. UTC | #4
On Wed, 10 Jan 2024 10:01:11 +0100, Alexander Stein wrote:
> Ensure the device has been setup correctly before registering the v4l2
> async device, thus allowing userspace to access.
> 
> 

Applied, thanks!

[1/1] media: tc358743: register v4l2 async device only after successful setup
      https://cgit.freedesktop.org/drm/drm-misc/commit/?id=87399f1ff922



Rob
  

Patch

diff --git a/drivers/media/i2c/tc358743.c b/drivers/media/i2c/tc358743.c
index 2785935da497b..558152575d102 100644
--- a/drivers/media/i2c/tc358743.c
+++ b/drivers/media/i2c/tc358743.c
@@ -2091,9 +2091,6 @@  static int tc358743_probe(struct i2c_client *client)
 	state->mbus_fmt_code = MEDIA_BUS_FMT_RGB888_1X24;
 
 	sd->dev = &client->dev;
-	err = v4l2_async_register_subdev(sd);
-	if (err < 0)
-		goto err_hdl;
 
 	mutex_init(&state->confctl_mutex);
 
@@ -2151,6 +2148,10 @@  static int tc358743_probe(struct i2c_client *client)
 	if (err)
 		goto err_work_queues;
 
+	err = v4l2_async_register_subdev(sd);
+	if (err < 0)
+		goto err_work_queues;
+
 	v4l2_info(sd, "%s found @ 0x%x (%s)\n", client->name,
 		  client->addr << 1, client->adapter->name);