diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-08-10 00:05:52 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-08-10 00:05:52 -0400 |
commit | f6cec0ae58c17522a7bc4e2f39dae19f199ab534 (patch) | |
tree | 496cf6f53b0c75d9ae57bd0e411c5d2f6cea5cbb /drivers/isdn | |
parent | 0fcf12d510b6d1b1b090a090c62009310eca4be4 (diff) | |
parent | c4e9b56e24422e71424b24eee27c2b134a191d7b (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (59 commits)
igbvf.txt: Add igbvf Documentation
igb.txt: Add igb documentation
e100/e1000*/igb*/ixgb*: Add missing read memory barrier
ixgbe: fix build error with FCOE_CONFIG without DCB_CONFIG
netxen: protect tx timeout recovery by rtnl lock
isdn: gigaset: use after free
isdn: gigaset: add missing unlock
solos-pci: Fix race condition in tasklet RX handling
pkt_sched: Fix sch_sfq vs tcf_bind_filter oops
net: disable preemption before call smp_processor_id()
tcp: no md5sig option size check bug
iwlwifi: fix locking assertions
iwlwifi: fix TX tracer
isdn: fix information leak
net: Fix napi_gro_frags vs netpoll path
usbnet: remove noisy and hardly useful printk
rtl8180: avoid potential NULL deref in rtl8180_beacon_work
ath9k: Remove myself from the MAINTAINERS list
libertas: scan before assocation if no BSSID was given
libertas: fix association with some APs by using extended rates
...
Diffstat (limited to 'drivers/isdn')
-rw-r--r-- | drivers/isdn/gigaset/bas-gigaset.c | 6 | ||||
-rw-r--r-- | drivers/isdn/gigaset/capi.c | 1 | ||||
-rw-r--r-- | drivers/isdn/sc/ioctl.c | 10 |
3 files changed, 10 insertions, 7 deletions
diff --git a/drivers/isdn/gigaset/bas-gigaset.c b/drivers/isdn/gigaset/bas-gigaset.c index 0ded3640b926..707d9c94cf9e 100644 --- a/drivers/isdn/gigaset/bas-gigaset.c +++ b/drivers/isdn/gigaset/bas-gigaset.c | |||
@@ -1914,11 +1914,13 @@ static int gigaset_write_cmd(struct cardstate *cs, struct cmdbuf_t *cb) | |||
1914 | * The next command will reopen the AT channel automatically. | 1914 | * The next command will reopen the AT channel automatically. |
1915 | */ | 1915 | */ |
1916 | if (cb->len == 3 && !memcmp(cb->buf, "+++", 3)) { | 1916 | if (cb->len == 3 && !memcmp(cb->buf, "+++", 3)) { |
1917 | kfree(cb); | ||
1918 | rc = req_submit(cs->bcs, HD_CLOSE_ATCHANNEL, 0, BAS_TIMEOUT); | 1917 | rc = req_submit(cs->bcs, HD_CLOSE_ATCHANNEL, 0, BAS_TIMEOUT); |
1919 | if (cb->wake_tasklet) | 1918 | if (cb->wake_tasklet) |
1920 | tasklet_schedule(cb->wake_tasklet); | 1919 | tasklet_schedule(cb->wake_tasklet); |
1921 | return rc < 0 ? rc : cb->len; | 1920 | if (!rc) |
1921 | rc = cb->len; | ||
1922 | kfree(cb); | ||
1923 | return rc; | ||
1922 | } | 1924 | } |
1923 | 1925 | ||
1924 | spin_lock_irqsave(&cs->cmdlock, flags); | 1926 | spin_lock_irqsave(&cs->cmdlock, flags); |
diff --git a/drivers/isdn/gigaset/capi.c b/drivers/isdn/gigaset/capi.c index e5ea344a551a..bcc174e4f3b1 100644 --- a/drivers/isdn/gigaset/capi.c +++ b/drivers/isdn/gigaset/capi.c | |||
@@ -1052,6 +1052,7 @@ static inline void remove_appl_from_channel(struct bc_state *bcs, | |||
1052 | do { | 1052 | do { |
1053 | if (bcap->bcnext == ap) { | 1053 | if (bcap->bcnext == ap) { |
1054 | bcap->bcnext = bcap->bcnext->bcnext; | 1054 | bcap->bcnext = bcap->bcnext->bcnext; |
1055 | spin_unlock_irqrestore(&bcs->aplock, flags); | ||
1055 | return; | 1056 | return; |
1056 | } | 1057 | } |
1057 | bcap = bcap->bcnext; | 1058 | bcap = bcap->bcnext; |
diff --git a/drivers/isdn/sc/ioctl.c b/drivers/isdn/sc/ioctl.c index 43c5dc3516e5..4cfdbe08ffd1 100644 --- a/drivers/isdn/sc/ioctl.c +++ b/drivers/isdn/sc/ioctl.c | |||
@@ -174,7 +174,7 @@ int sc_ioctl(int card, scs_ioctl *data) | |||
174 | pr_debug("%s: SCIOGETSPID: ioctl received\n", | 174 | pr_debug("%s: SCIOGETSPID: ioctl received\n", |
175 | sc_adapter[card]->devicename); | 175 | sc_adapter[card]->devicename); |
176 | 176 | ||
177 | spid = kmalloc(SCIOC_SPIDSIZE, GFP_KERNEL); | 177 | spid = kzalloc(SCIOC_SPIDSIZE, GFP_KERNEL); |
178 | if (!spid) { | 178 | if (!spid) { |
179 | kfree(rcvmsg); | 179 | kfree(rcvmsg); |
180 | return -ENOMEM; | 180 | return -ENOMEM; |
@@ -194,7 +194,7 @@ int sc_ioctl(int card, scs_ioctl *data) | |||
194 | kfree(rcvmsg); | 194 | kfree(rcvmsg); |
195 | return status; | 195 | return status; |
196 | } | 196 | } |
197 | strcpy(spid, rcvmsg->msg_data.byte_array); | 197 | strlcpy(spid, rcvmsg->msg_data.byte_array, SCIOC_SPIDSIZE); |
198 | 198 | ||
199 | /* | 199 | /* |
200 | * Package the switch type and send to user space | 200 | * Package the switch type and send to user space |
@@ -266,12 +266,12 @@ int sc_ioctl(int card, scs_ioctl *data) | |||
266 | return status; | 266 | return status; |
267 | } | 267 | } |
268 | 268 | ||
269 | dn = kmalloc(SCIOC_DNSIZE, GFP_KERNEL); | 269 | dn = kzalloc(SCIOC_DNSIZE, GFP_KERNEL); |
270 | if (!dn) { | 270 | if (!dn) { |
271 | kfree(rcvmsg); | 271 | kfree(rcvmsg); |
272 | return -ENOMEM; | 272 | return -ENOMEM; |
273 | } | 273 | } |
274 | strcpy(dn, rcvmsg->msg_data.byte_array); | 274 | strlcpy(dn, rcvmsg->msg_data.byte_array, SCIOC_DNSIZE); |
275 | kfree(rcvmsg); | 275 | kfree(rcvmsg); |
276 | 276 | ||
277 | /* | 277 | /* |
@@ -337,7 +337,7 @@ int sc_ioctl(int card, scs_ioctl *data) | |||
337 | pr_debug("%s: SCIOSTAT: ioctl received\n", | 337 | pr_debug("%s: SCIOSTAT: ioctl received\n", |
338 | sc_adapter[card]->devicename); | 338 | sc_adapter[card]->devicename); |
339 | 339 | ||
340 | bi = kmalloc (sizeof(boardInfo), GFP_KERNEL); | 340 | bi = kzalloc(sizeof(boardInfo), GFP_KERNEL); |
341 | if (!bi) { | 341 | if (!bi) { |
342 | kfree(rcvmsg); | 342 | kfree(rcvmsg); |
343 | return -ENOMEM; | 343 | return -ENOMEM; |