lkml.org 
[lkml]   [2021]   [Sep]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v4 01/11] media: cadence: csi2rx: Unregister v4l2 async notifier
    Date
    The notifier is added to the global notifier list when registered. When
    the module is removed, the struct csi2rx_priv in which the notifier is
    embedded, is destroyed. As a result the notifier list has a reference to
    a notifier that no longer exists. This causes invalid memory accesses
    when the list is iterated over. Similar for when the probe fails.

    Unregister and clean up the notifier to avoid this.

    Fixes: 1fc3b37f34f6 ("media: v4l: cadence: Add Cadence MIPI-CSI2 RX driver")
    Signed-off-by: Pratyush Yadav <p.yadav@ti.com>

    ---

    (no changes since v3)

    Changes in v3:
    - New in v3.

    drivers/media/platform/cadence/cdns-csi2rx.c | 3 +++
    1 file changed, 3 insertions(+)

    diff --git a/drivers/media/platform/cadence/cdns-csi2rx.c b/drivers/media/platform/cadence/cdns-csi2rx.c
    index 7b44ab2b8c9a..d60975f905d6 100644
    --- a/drivers/media/platform/cadence/cdns-csi2rx.c
    +++ b/drivers/media/platform/cadence/cdns-csi2rx.c
    @@ -469,6 +469,7 @@ static int csi2rx_probe(struct platform_device *pdev)
    return 0;

    err_cleanup:
    + v4l2_async_nf_unregister(&csi2rx->notifier);
    v4l2_async_nf_cleanup(&csi2rx->notifier);
    err_free_priv:
    kfree(csi2rx);
    @@ -479,6 +480,8 @@ static int csi2rx_remove(struct platform_device *pdev)
    {
    struct csi2rx_priv *csi2rx = platform_get_drvdata(pdev);

    + v4l2_async_nf_unregister(&csi2rx->notifier);
    + v4l2_async_nf_cleanup(&csi2rx->notifier);
    v4l2_async_unregister_subdev(&csi2rx->subdev);
    kfree(csi2rx);

    --
    2.33.0
    \
     
     \ /
      Last update: 2021-09-15 14:03    [W:8.146 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site