linux/net/atm
Krzysztof Mazur 3ac108006f pppoatm: take ATM socket lock in pppoatm_send()
The pppoatm_send() does not take any lock that will prevent concurrent
vcc_sendmsg(). This causes two problems:

	- there is no locking between checking the send queue size
	  with atm_may_send() and incrementing sk_wmem_alloc,
	  and the real queue size can be a little higher than sk_sndbuf

	- the vcc->sendmsg() can be called concurrently. I'm not sure
	  if it's allowed. Some drivers (eni, nicstar, ...) seem
	  to assume it will never happen.

Now pppoatm_send() takes ATM socket lock, the same that is used
in vcc_sendmsg() and other ATM socket functions. The pppoatm_send()
is called with BH disabled, so bh_lock_sock() is used instead
of lock_sock().

Signed-off-by: Krzysztof Mazur <krzysiek@podlesie.net>
Cc: Chas Williams - CONTRACTOR <chas@cmf.nrl.navy.mil>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
2012-11-28 00:37:05 +00:00
..
addr.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
addr.h
atm_misc.c atm: eliminate atm_guess_pdu2truesize() 2011-11-26 16:40:30 -05:00
atm_sysfs.c atm: expose ATM device index in sysfs 2011-05-27 13:07:21 -04:00
br2684.c atm: br2684: Fix excessive queue bloat 2012-11-26 17:13:56 -05:00
clip.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
common.c atm: add owner of push() callback to atmvcc 2012-11-28 00:36:48 +00:00
common.h atm: Introduce vcc_process_recv_queue 2011-11-22 16:15:42 -05:00
ioctl.c net: Convert net_ratelimit uses to net_<level>_ratelimited 2012-05-15 13:45:03 -04:00
Kconfig
lec_arpc.h
lec.c net: Remove casts to same type 2012-06-04 11:45:11 -04:00
lec.h Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-05-22 19:22:50 -07:00
Makefile
mpc.c atm: Convert compare_ether_addr to ether_addr_equal 2012-05-09 20:49:17 -04:00
mpc.h atm: convert mpc device to using netdev_ops 2009-03-21 19:19:12 -07:00
mpoa_caches.c net: Remove unnecessary returns from void function()s 2010-05-17 23:23:14 -07:00
mpoa_caches.h
mpoa_proc.c net: cleanup unsigned to unsigned int 2012-04-15 12:44:40 -04:00
pppoatm.c pppoatm: take ATM socket lock in pppoatm_send() 2012-11-28 00:37:05 +00:00
proc.c atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
protocols.h
pvc.c atm: fix info leak via getsockname() 2012-08-15 21:36:30 -07:00
raw.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
resources.c net🏧fix up ENOIOCTLCMD error handling 2012-08-31 16:14:33 -04:00
resources.h atm: correct sysfs 'device' link creation and parent relationships 2010-12-10 15:45:05 -08:00
signaling.c net: cleanup unsigned to unsigned int 2012-04-15 12:44:40 -04:00
signaling.h
svc.c net: Add export.h for EXPORT_SYMBOL/THIS_MODULE to non-modules 2011-10-31 19:30:30 -04:00