Bluetooth: dtl1: Fix memleak in probe()
authorDavid Herrmann <dh.herrmann@googlemail.com>
Sat, 7 Jan 2012 14:19:41 +0000 (15:19 +0100)
committerJohan Hedberg <johan.hedberg@intel.com>
Mon, 13 Feb 2012 15:01:22 +0000 (17:01 +0200)
We currently leak the driver info structure if dtl1_config fails. If we add a
kfree() to dtl1_release to fix this, then dtl1_release and dtl1_detach are
identical so this merges both functions.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
drivers/bluetooth/dtl1_cs.c

index 969bb22e493f530977ab1c5258f55067963a6cac..b2db5e9bd1fde5e89651793d9a15333b1285888b 100644 (file)
@@ -83,9 +83,6 @@ typedef struct dtl1_info_t {
 
 
 static int dtl1_config(struct pcmcia_device *link);
-static void dtl1_release(struct pcmcia_device *link);
-
-static void dtl1_detach(struct pcmcia_device *p_dev);
 
 
 /* Transmit states  */
@@ -579,8 +576,8 @@ static void dtl1_detach(struct pcmcia_device *link)
 {
        dtl1_info_t *info = link->priv;
 
-       dtl1_release(link);
-
+       dtl1_close(info);
+       pcmcia_disable_device(link);
        kfree(info);
 }
 
@@ -619,21 +616,10 @@ static int dtl1_config(struct pcmcia_device *link)
        return 0;
 
 failed:
-       dtl1_release(link);
+       dtl1_detach(link);
        return -ENODEV;
 }
 
-
-static void dtl1_release(struct pcmcia_device *link)
-{
-       dtl1_info_t *info = link->priv;
-
-       dtl1_close(info);
-
-       pcmcia_disable_device(link);
-}
-
-
 static const struct pcmcia_device_id dtl1_ids[] = {
        PCMCIA_DEVICE_PROD_ID12("Nokia Mobile Phones", "DTL-1", 0xe1bfdd64, 0xe168480d),
        PCMCIA_DEVICE_PROD_ID12("Nokia Mobile Phones", "DTL-4", 0xe1bfdd64, 0x9102bc82),