aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/atm/firestream.c')
-rw-r--r--drivers/atm/firestream.c3
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