diff --git a/sys/netbt/sco_socket.c b/sys/netbt/sco_socket.c index 0000000..1111111 100644 --- a/sys/netbt/sco_socket.c +++ b/sys/netbt/sco_socket.c @@ -111,13 +111,11 @@ m = m_get(M_WAITOK, MT_DATA); m->m_len = sco_getopt(pcb, sopt->sopt_name, mtod(m, uint8_t *)); if (m->m_len == 0) { - m_freem(m); - m = NULL; err = ENOPROTOOPT; + } else { + soopt_from_kbuf(sopt, mtod(m, void *), m->m_len); } - /* *opt = m; */ - /* XXX There are possible memory leaks (Griffin) */ - soopt_from_kbuf(sopt, mtod(m, void *), m->m_len); + m_freem(m); break; case PRCO_SETOPT: