staging: gigaset: fix illegal free on probe errors
commit 84f60ca7b326ed8c08582417493982fe2573a9ad upstream.
The driver failed to initialise its receive-buffer pointer, something
which could lead to an illegal free on late probe errors.
Fix this by making sure to clear all driver data at allocation.
Fixes: 2032e2c230
("usb_gigaset: code cleanup")
Cc: stable <stable@vger.kernel.org> # 2.6.33
Cc: Tilman Schmidt <tilman@imap.cc>
Signed-off-by: Johan Hovold <johan@kernel.org>
Link: https://lore.kernel.org/r/20191202085610.12719-3-johan@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
21c412902c
commit
a2b2bc2947
1 changed files with 1 additions and 5 deletions
|
@ -574,8 +574,7 @@ static int gigaset_initcshw(struct cardstate *cs)
|
||||||
{
|
{
|
||||||
struct usb_cardstate *ucs;
|
struct usb_cardstate *ucs;
|
||||||
|
|
||||||
cs->hw.usb = ucs =
|
cs->hw.usb = ucs = kzalloc(sizeof(struct usb_cardstate), GFP_KERNEL);
|
||||||
kmalloc(sizeof(struct usb_cardstate), GFP_KERNEL);
|
|
||||||
if (!ucs) {
|
if (!ucs) {
|
||||||
pr_err("out of memory\n");
|
pr_err("out of memory\n");
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
@ -587,9 +586,6 @@ static int gigaset_initcshw(struct cardstate *cs)
|
||||||
ucs->bchars[3] = 0;
|
ucs->bchars[3] = 0;
|
||||||
ucs->bchars[4] = 0x11;
|
ucs->bchars[4] = 0x11;
|
||||||
ucs->bchars[5] = 0x13;
|
ucs->bchars[5] = 0x13;
|
||||||
ucs->bulk_out_buffer = NULL;
|
|
||||||
ucs->bulk_out_urb = NULL;
|
|
||||||
ucs->read_urb = NULL;
|
|
||||||
tasklet_init(&cs->write_tasklet,
|
tasklet_init(&cs->write_tasklet,
|
||||||
gigaset_modem_fill, (unsigned long) cs);
|
gigaset_modem_fill, (unsigned long) cs);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue