Message ID | 20200420184029.22891-1-scerveau@collabora.com (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Luiz Von Dentz |
Headers | show |
Series | [1/1] add hog ref before adding to instances | expand |
Hi Stéphane, On Mon, Apr 20, 2020 at 11:42 AM Stéphane Cerveau <scerveau@collabora.com> wrote: > > To avoid a double hog free, need to add a ref > when adding the hog to the slist. > > This bug has been reproduced with gamepad-8718 > which was connecting/disconnecting frantically. > > Fix also a typo in the method hog_attach_instance > --- > profiles/input/hog-lib.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/profiles/input/hog-lib.c b/profiles/input/hog-lib.c > index 9c5c814a7..8fb0283ca 100644 > --- a/profiles/input/hog-lib.c > +++ b/profiles/input/hog-lib.c > @@ -1357,7 +1357,7 @@ static struct bt_hog *hog_new(int fd, const char *name, uint16_t vendor, > return hog; > } > > -static void hog_attach_instace(struct bt_hog *hog, > +static void hog_attach_instance(struct bt_hog *hog, > struct gatt_db_attribute *attr) > { > struct bt_hog *instance; > @@ -1373,14 +1373,14 @@ static void hog_attach_instace(struct bt_hog *hog, > if (!instance) > return; > > - hog->instances = g_slist_append(hog->instances, instance); > + hog->instances = g_slist_append(hog->instances, bt_hog_ref(instance)); > } > > static void foreach_hog_service(struct gatt_db_attribute *attr, void *user_data) > { > struct bt_hog *hog = user_data; > > - hog_attach_instace(hog, attr); > + hog_attach_instance(hog, attr); > } > > static void dis_notify(uint8_t source, uint16_t vendor, uint16_t product, > -- > 2.17.1 Applied, thanks.
diff --git a/profiles/input/hog-lib.c b/profiles/input/hog-lib.c index 9c5c814a7..8fb0283ca 100644 --- a/profiles/input/hog-lib.c +++ b/profiles/input/hog-lib.c @@ -1357,7 +1357,7 @@ static struct bt_hog *hog_new(int fd, const char *name, uint16_t vendor, return hog; } -static void hog_attach_instace(struct bt_hog *hog, +static void hog_attach_instance(struct bt_hog *hog, struct gatt_db_attribute *attr) { struct bt_hog *instance; @@ -1373,14 +1373,14 @@ static void hog_attach_instace(struct bt_hog *hog, if (!instance) return; - hog->instances = g_slist_append(hog->instances, instance); + hog->instances = g_slist_append(hog->instances, bt_hog_ref(instance)); } static void foreach_hog_service(struct gatt_db_attribute *attr, void *user_data) { struct bt_hog *hog = user_data; - hog_attach_instace(hog, attr); + hog_attach_instance(hog, attr); } static void dis_notify(uint8_t source, uint16_t vendor, uint16_t product,