summaryrefslogtreecommitdiffstats
path: root/net/atm/mpoa_proc.c
diff options
context:
space:
mode:
authorKrzysztof Mazur <krzysiek@podlesie.net>2012-11-06 23:17:00 +0100
committerDavid Woodhouse <David.Woodhouse@intel.com>2012-11-28 00:37:05 +0000
commit3ac108006fd7f20cb8fc8ea2287f1497bcda00a1 (patch)
tree4931009972256abde839087b795c7b9b4926ae36 /net/atm/mpoa_proc.c
parente41faed9cde1acce657f75a0b19a1787e9850d3f (diff)
downloadop-kernel-dev-3ac108006fd7f20cb8fc8ea2287f1497bcda00a1.zip
op-kernel-dev-3ac108006fd7f20cb8fc8ea2287f1497bcda00a1.tar.gz
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>
Diffstat (limited to 'net/atm/mpoa_proc.c')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud