diff options
Diffstat (limited to 'drivers/atm/firestream.c')
-rw-r--r-- | drivers/atm/firestream.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/atm/firestream.c b/drivers/atm/firestream.c index 4e46dc9e41ad..112b1001c269 100644 --- a/drivers/atm/firestream.c +++ b/drivers/atm/firestream.c | |||
@@ -927,6 +927,7 @@ static int fs_open(struct atm_vcc *atm_vcc) | |||
927 | } | 927 | } |
928 | if (!to) { | 928 | if (!to) { |
929 | printk ("No more free channels for FS50..\n"); | 929 | printk ("No more free channels for FS50..\n"); |
930 | kfree(vcc); | ||
930 | return -EBUSY; | 931 | return -EBUSY; |
931 | } | 932 | } |
932 | vcc->channo = dev->channo; | 933 | vcc->channo = dev->channo; |
@@ -937,6 +938,7 @@ static int fs_open(struct atm_vcc *atm_vcc) | |||
937 | if (((DO_DIRECTION(rxtp) && dev->atm_vccs[vcc->channo])) || | 938 | if (((DO_DIRECTION(rxtp) && dev->atm_vccs[vcc->channo])) || |
938 | ( DO_DIRECTION(txtp) && test_bit (vcc->channo, dev->tx_inuse))) { | 939 | ( DO_DIRECTION(txtp) && test_bit (vcc->channo, dev->tx_inuse))) { |
939 | printk ("Channel is in use for FS155.\n"); | 940 | printk ("Channel is in use for FS155.\n"); |
941 | kfree(vcc); | ||
940 | return -EBUSY; | 942 | return -EBUSY; |
941 | } | 943 | } |
942 | } | 944 | } |
@@ -950,6 +952,7 @@ static int fs_open(struct atm_vcc *atm_vcc) | |||
950 | tc, sizeof (struct fs_transmit_config)); | 952 | tc, sizeof (struct fs_transmit_config)); |
951 | if (!tc) { | 953 | if (!tc) { |
952 | fs_dprintk (FS_DEBUG_OPEN, "fs: can't alloc transmit_config.\n"); | 954 | fs_dprintk (FS_DEBUG_OPEN, "fs: can't alloc transmit_config.\n"); |
955 | kfree(vcc); | ||
953 | return -ENOMEM; | 956 | return -ENOMEM; |
954 | } | 957 | } |
955 | 958 | ||