Message ID | 20200914155749.183030-1-jacopo+renesas@jmondi.org (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Kieran Bingham |
Headers | show |
Series | media: i2c: max9286: Fix async subdev size | expand |
Hi Jacopo, Thank you for the patch. On Mon, Sep 14, 2020 at 05:57:49PM +0200, Jacopo Mondi wrote: > Since commit: > 86d37bf31af6 ("media: i2c: max9286: Allocate v4l2_async_subdev dynamically") > the async subdevice registered to the max9286 notifier is dynamically > allocated by the v4l2 framework by using > the v4l2_async_notifier_add_fwnode_subdev function. In order to allocate > enough space for max9286_asd structure that encloses the async subdevice > paired with a pointer to the corresponding source, pass to the framework > the size of the whole structure in place of the one of the enclosed async > subdev. > > Fixes: 86d37bf31af6 ("media: i2c: max9286: Allocate v4l2_async_subdev dynamically") > Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org> > --- > drivers/media/i2c/max9286.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/drivers/media/i2c/max9286.c b/drivers/media/i2c/max9286.c > index c82c1493e099..746c411b79a0 100644 > --- a/drivers/media/i2c/max9286.c > +++ b/drivers/media/i2c/max9286.c > @@ -579,8 +579,7 @@ static int max9286_v4l2_notifier_register(struct max9286_priv *priv) > struct v4l2_async_subdev *asd; > > asd = v4l2_async_notifier_add_fwnode_subdev(&priv->notifier, > - source->fwnode, > - sizeof(*asd)); > + source->fwnode, sizeof(struct max9286_asd)); I'd write struct v4l2_async_subdev *asd; struct max9286_asd *masd; asd = v4l2_async_notifier_add_fwnode_subdev(&priv->notifier, source->fwnode, sizeof(*masd)); if (IS_ERR(asd)) { dev_err(dev, "Failed to add subdev for source %u: %ld", i, PTR_ERR(asd)); v4l2_async_notifier_cleanup(&priv->notifier); return PTR_ERR(asd); } masd = to_max9286_asd(asd); masd->source = source; just to be able to avoid the ugly indentiation, but that's really nitpicking :-) With or without that, sorry for breaking the driver in the first place, and Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > if (IS_ERR(asd)) { > dev_err(dev, "Failed to add subdev for source %u: %ld", > i, PTR_ERR(asd));
Hi Laurent, On Tue, Sep 15, 2020 at 02:30:08AM +0300, Laurent Pinchart wrote: > Hi Jacopo, > > Thank you for the patch. > > On Mon, Sep 14, 2020 at 05:57:49PM +0200, Jacopo Mondi wrote: > > Since commit: > > 86d37bf31af6 ("media: i2c: max9286: Allocate v4l2_async_subdev dynamically") > > the async subdevice registered to the max9286 notifier is dynamically > > allocated by the v4l2 framework by using > > the v4l2_async_notifier_add_fwnode_subdev function. In order to allocate > > enough space for max9286_asd structure that encloses the async subdevice > > paired with a pointer to the corresponding source, pass to the framework > > the size of the whole structure in place of the one of the enclosed async > > subdev. > > > > Fixes: 86d37bf31af6 ("media: i2c: max9286: Allocate v4l2_async_subdev dynamically") > > Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org> > > --- > > drivers/media/i2c/max9286.c | 3 +-- > > 1 file changed, 1 insertion(+), 2 deletions(-) > > > > diff --git a/drivers/media/i2c/max9286.c b/drivers/media/i2c/max9286.c > > index c82c1493e099..746c411b79a0 100644 > > --- a/drivers/media/i2c/max9286.c > > +++ b/drivers/media/i2c/max9286.c > > @@ -579,8 +579,7 @@ static int max9286_v4l2_notifier_register(struct max9286_priv *priv) > > struct v4l2_async_subdev *asd; > > > > asd = v4l2_async_notifier_add_fwnode_subdev(&priv->notifier, > > - source->fwnode, > > - sizeof(*asd)); > > + source->fwnode, sizeof(struct max9286_asd)); > > I'd write > > struct v4l2_async_subdev *asd; > struct max9286_asd *masd; > > asd = v4l2_async_notifier_add_fwnode_subdev(&priv->notifier, > source->fwnode, > sizeof(*masd)); > if (IS_ERR(asd)) { > dev_err(dev, "Failed to add subdev for source %u: %ld", > i, PTR_ERR(asd)); > v4l2_async_notifier_cleanup(&priv->notifier); > return PTR_ERR(asd); > } > > masd = to_max9286_asd(asd); > masd->source = source; I considered the same, but then decided that indent was not that bad, but I can indeed change it, I like this version better after all. > > just to be able to avoid the ugly indentiation, but that's really > nitpicking :-) With or without that, sorry for breaking the driver in > the first place, and > > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Thanks j > > > if (IS_ERR(asd)) { > > dev_err(dev, "Failed to add subdev for source %u: %ld", > > i, PTR_ERR(asd)); > > -- > Regards, > > Laurent Pinchart
On 15/09/2020 00:30, Laurent Pinchart wrote: > Hi Jacopo, > > Thank you for the patch. > > On Mon, Sep 14, 2020 at 05:57:49PM +0200, Jacopo Mondi wrote: >> Since commit: >> 86d37bf31af6 ("media: i2c: max9286: Allocate v4l2_async_subdev dynamically") >> the async subdevice registered to the max9286 notifier is dynamically >> allocated by the v4l2 framework by using >> the v4l2_async_notifier_add_fwnode_subdev function. In order to allocate >> enough space for max9286_asd structure that encloses the async subdevice >> paired with a pointer to the corresponding source, pass to the framework >> the size of the whole structure in place of the one of the enclosed async >> subdev. >> >> Fixes: 86d37bf31af6 ("media: i2c: max9286: Allocate v4l2_async_subdev dynamically") >> Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org> >> --- >> drivers/media/i2c/max9286.c | 3 +-- >> 1 file changed, 1 insertion(+), 2 deletions(-) >> >> diff --git a/drivers/media/i2c/max9286.c b/drivers/media/i2c/max9286.c >> index c82c1493e099..746c411b79a0 100644 >> --- a/drivers/media/i2c/max9286.c >> +++ b/drivers/media/i2c/max9286.c >> @@ -579,8 +579,7 @@ static int max9286_v4l2_notifier_register(struct max9286_priv *priv) >> struct v4l2_async_subdev *asd; >> >> asd = v4l2_async_notifier_add_fwnode_subdev(&priv->notifier, >> - source->fwnode, >> - sizeof(*asd)); >> + source->fwnode, sizeof(struct max9286_asd)); > > I'd write > > struct v4l2_async_subdev *asd; > struct max9286_asd *masd; > > asd = v4l2_async_notifier_add_fwnode_subdev(&priv->notifier, > source->fwnode, > sizeof(*masd)); Ha, at first glance that looks like you're dereferencing an uninitialised pointer though. But it's only the sizeof - so the actual pointer doesn't matter at that point ;-) -- Kieran > if (IS_ERR(asd)) { > dev_err(dev, "Failed to add subdev for source %u: %ld", > i, PTR_ERR(asd)); > v4l2_async_notifier_cleanup(&priv->notifier); > return PTR_ERR(asd); > } > > masd = to_max9286_asd(asd); > masd->source = source; > > just to be able to avoid the ugly indentiation, but that's really > nitpicking :-) With or without that, sorry for breaking the driver in > the first place, and > > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > >> if (IS_ERR(asd)) { >> dev_err(dev, "Failed to add subdev for source %u: %ld", >> i, PTR_ERR(asd)); >
diff --git a/drivers/media/i2c/max9286.c b/drivers/media/i2c/max9286.c index c82c1493e099..746c411b79a0 100644 --- a/drivers/media/i2c/max9286.c +++ b/drivers/media/i2c/max9286.c @@ -579,8 +579,7 @@ static int max9286_v4l2_notifier_register(struct max9286_priv *priv) struct v4l2_async_subdev *asd; asd = v4l2_async_notifier_add_fwnode_subdev(&priv->notifier, - source->fwnode, - sizeof(*asd)); + source->fwnode, sizeof(struct max9286_asd)); if (IS_ERR(asd)) { dev_err(dev, "Failed to add subdev for source %u: %ld", i, PTR_ERR(asd));
Since commit: 86d37bf31af6 ("media: i2c: max9286: Allocate v4l2_async_subdev dynamically") the async subdevice registered to the max9286 notifier is dynamically allocated by the v4l2 framework by using the v4l2_async_notifier_add_fwnode_subdev function. In order to allocate enough space for max9286_asd structure that encloses the async subdevice paired with a pointer to the corresponding source, pass to the framework the size of the whole structure in place of the one of the enclosed async subdev. Fixes: 86d37bf31af6 ("media: i2c: max9286: Allocate v4l2_async_subdev dynamically") Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org> --- drivers/media/i2c/max9286.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) -- 2.28.0