irda: Correctly clean up self->ias_obj on irda_bind() failure.
If irda_open_tsap() fails, the irda_bind() code tries to destroy the ->ias_obj object by hand, but does so wrongly. In particular, it fails to a) release the hashbin attached to the object and b) reset the self->ias_obj pointer to NULL. Fix both problems by using irias_delete_object() and explicitly setting self->ias_obj to NULL, just as irda_release() does. Reported-by: Tavis Ormandy <taviso@cmpxchg8b.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
7619b1b2e2
Коммит
628e300ccc
|
@ -824,8 +824,8 @@ static int irda_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
|
||||||
|
|
||||||
err = irda_open_tsap(self, addr->sir_lsap_sel, addr->sir_name);
|
err = irda_open_tsap(self, addr->sir_lsap_sel, addr->sir_name);
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
kfree(self->ias_obj->name);
|
irias_delete_object(self->ias_obj);
|
||||||
kfree(self->ias_obj);
|
self->ias_obj = NULL;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче