From: Krzysztof Mazur Date: Tue, 6 Nov 2012 22:17:00 +0000 (+0100) Subject: pppoatm: take ATM socket lock in pppoatm_send() X-Git-Tag: omap-for-v3.8/fixes-for-merge-window-v4-signed~45^2~138^2~13 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3ac108006fd7f20cb8fc8ea2287f1497bcda00a1;p=pandora-kernel.git 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 Cc: Chas Williams - CONTRACTOR Signed-off-by: David Woodhouse --- Reading git-diff-tree failed