Hi Andrei, On Fri, Jan 10, 2014 at 4:56 PM, Andrei Emeltchenko <Andrei.Emeltchenko.news@xxxxxxxxx> wrote: > From: Andrei Emeltchenko <andrei.emeltchenko@xxxxxxxxx> > > session->target cannot be NULL since it is already checked 11 lines > above: > ... > if (session == NULL || session->target == NULL) > return -ENOTCONN; > ... > --- > profiles/audio/avrcp.c | 24 ++++-------------------- > 1 file changed, 4 insertions(+), 20 deletions(-) > > diff --git a/profiles/audio/avrcp.c b/profiles/audio/avrcp.c > index 8d4309a..197959f 100644 > --- a/profiles/audio/avrcp.c > +++ b/profiles/audio/avrcp.c > @@ -3722,30 +3722,14 @@ int avrcp_set_volume(struct btd_device *dev, uint8_t volume) > > DBG("volume=%u", volume); > > - if (session->target) { > - pdu->pdu_id = AVRCP_SET_ABSOLUTE_VOLUME; > - pdu->params[0] = volume; > - pdu->params_len = htons(1); > + pdu->pdu_id = AVRCP_SET_ABSOLUTE_VOLUME; > + pdu->params[0] = volume; > + pdu->params_len = htons(1); > > - return avctp_send_vendordep_req(session->conn, > + return avctp_send_vendordep_req(session->conn, > AVC_CTYPE_CONTROL, AVC_SUBUNIT_PANEL, > buf, sizeof(buf), > avrcp_handle_set_volume, session); > - } else if (session->registered_events & > - (1 << AVRCP_EVENT_VOLUME_CHANGED)) { > - uint8_t id = AVRCP_EVENT_VOLUME_CHANGED; > - pdu->pdu_id = AVRCP_REGISTER_NOTIFICATION; > - pdu->params[0] = AVRCP_EVENT_VOLUME_CHANGED; > - pdu->params[1] = volume; > - pdu->params_len = htons(2); > - > - return avctp_send_vendordep(session->conn, > - session->transaction_events[id], > - AVC_CTYPE_CHANGED, AVC_SUBUNIT_PANEL, > - buf, sizeof(buf)); > - } The above code is necessary to notify volume changes when acting as controller (session->control is set), so your fix is not good either and we should depend on session->target on the first place because both session->control and session->target can be set. -- 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