NetLabel: correct locking in selinux_netlbl_socket_setsid()
The spinlock protecting the update of the "sksec->nlbl_state" variable is not currently softirq safe which can lead to problems. This patch fixes this by changing the spin_{un}lock() functions into spin_{un}lock_bh() functions. Signed-off-by: Paul Moore <paul.moore@hp.com> Signed-off-by: James Morris <jmorris@namei.org>
This commit is contained in:
Родитель
86112ffdcc
Коммит
7979512006
|
@ -2491,9 +2491,9 @@ static int selinux_netlbl_socket_setsid(struct socket *sock, u32 sid)
|
|||
|
||||
rc = netlbl_socket_setattr(sock, &secattr);
|
||||
if (rc == 0) {
|
||||
spin_lock(&sksec->nlbl_lock);
|
||||
spin_lock_bh(&sksec->nlbl_lock);
|
||||
sksec->nlbl_state = NLBL_LABELED;
|
||||
spin_unlock(&sksec->nlbl_lock);
|
||||
spin_unlock_bh(&sksec->nlbl_lock);
|
||||
}
|
||||
|
||||
netlbl_socket_setsid_return:
|
||||
|
|
Загрузка…
Ссылка в новой задаче