From: Luiz Augusto von Dentz <luiz.von.dentz@xxxxxxxxx> If user application is unregistering a notification handler its callbacks shall not be called even CCC write is still holding a reference to notify_data. --- src/shared/gatt-client.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/shared/gatt-client.c b/src/shared/gatt-client.c index 8083ff719..1285c37ef 100644 --- a/src/shared/gatt-client.c +++ b/src/shared/gatt-client.c @@ -1212,7 +1212,9 @@ static void complete_notify_request(void *data) struct notify_data *notify_data = data; notify_data->att_id = 0; - notify_data->callback(0, notify_data->user_data); + + if (notify_data->callback) + notify_data->callback(0, notify_data->user_data); } static bool notify_data_write_ccc(struct notify_data *notify_data, bool enable, @@ -3157,6 +3159,10 @@ bool bt_gatt_client_unregister_notify(struct bt_gatt_client *client, /* Remove data if it has been queued */ queue_remove(notify_data->chrc->reg_notify_queue, notify_data); + /* Reset callbacks */ + notify_data->callback = NULL; + notify_data->notify = NULL; + complete_unregister_notify(notify_data); return true; } -- 2.14.3 -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html