[PATCH] device: add null check on `self->priv->modem' in clear_modem

Aleksander Morgado aleksander at aleksander.es
Fri Mar 3 19:26:43 UTC 2017


On Fri, Mar 3, 2017 at 7:29 PM, Ben Chan <benchan at chromium.org> wrote:
> clear_modem() can be invoked from set_property() and dispose(), where
> `self->priv->modem' may be NULL. This patch adds a null check on the
> modem object to make sure we don't run g_object_run_dispose() on a null
> modem object.
> ---

Yes, it may happen that clear_modem() is called as a result of the
modem reporting "valid FALSE" when the primary port is lost; and then
again when the MMDevice is disposed. This patch should fix that
warning, LGTM.


>  src/mm-device.c | 10 ++++++----
>  1 file changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/src/mm-device.c b/src/mm-device.c
> index 803e64d3..6c856289 100644
> --- a/src/mm-device.c
> +++ b/src/mm-device.c
> @@ -302,10 +302,12 @@ clear_modem (MMDevice *self)
>          self->priv->modem_valid_id = 0;
>      }
>
> -    /* Run dispose before unref-ing, in order to cleanup the SIM object,
> -     * if any (which also holds a reference to the modem object) */
> -    g_object_run_dispose (G_OBJECT (self->priv->modem));
> -    g_clear_object (&(self->priv->modem));
> +    if (self->priv->modem) {
> +        /* Run dispose before unref-ing, in order to cleanup the SIM object,
> +         * if any (which also holds a reference to the modem object) */
> +        g_object_run_dispose (G_OBJECT (self->priv->modem));
> +        g_clear_object (&(self->priv->modem));
> +    }
>  }
>
>  void
> --
> 2.12.0.rc1.440.g5b76565f74-goog
>



-- 
Aleksander
https://aleksander.es


More information about the ModemManager-devel mailing list