Hi Caiwen,

On 05/12/2016 12:51 AM, [email protected] wrote:
From: caiwen Zhang <[email protected]>

---
  plugins/ril.c | 19 +++++++++++++++++--
  1 file changed, 17 insertions(+), 2 deletions(-)


I went ahead and applied this patch, however, see below:

diff --git a/plugins/ril.c b/plugins/ril.c
index 2298bb6..2ea3fb5 100644
--- a/plugins/ril.c
+++ b/plugins/ril.c
@@ -409,15 +409,30 @@ int ril_enable(struct ofono_modem *modem)
        return -EINPROGRESS;
  }

+static void power_off_cb(struct ril_msg *message, gpointer user_data)
+{
+       struct cb_data *cbd = user_data;
+       struct ril_data *rd = cbd->user;
+       struct ofono_modem *modem = cbd->data;
+
+       if (rd) {
+               g_ril_unref(rd->ril);

It seems GRil doesn't gracefully handle g_ril_unrefs from within a result callback. Have you tried running this with valgrind?

We might need to come up with a fix for GRil...

+               rd->ril = NULL;
+       }
+
+       ofono_modem_set_powered(modem, FALSE);
+}
+
  int ril_disable(struct ofono_modem *modem)
  {
        struct ril_data *rd = ofono_modem_get_data(modem);
+       struct cb_data *cbd = cb_data_new(NULL, modem, rd);

        DBG("%p", modem);

-       ril_send_power(rd, FALSE, NULL, NULL);
+       ril_send_power(rd, FALSE, power_off_cb, cbd);

-       return 0;
+       return -EINPROGRESS;
  }

  static struct ofono_modem_driver ril_driver = {


Regards,
-Denis
_______________________________________________
ofono mailing list
[email protected]
https://lists.ofono.org/mailman/listinfo/ofono

Reply via email to