diff options
-rw-r--r-- | security/smack/smack_lsm.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c index 1c11e4245859..5b690482f8cb 100644 --- a/security/smack/smack_lsm.c +++ b/security/smack/smack_lsm.c | |||
@@ -701,7 +701,7 @@ static int smack_inode_getsecurity(const struct inode *inode, | |||
701 | return -EOPNOTSUPP; | 701 | return -EOPNOTSUPP; |
702 | 702 | ||
703 | sock = SOCKET_I(ip); | 703 | sock = SOCKET_I(ip); |
704 | if (sock == NULL) | 704 | if (sock == NULL || sock->sk == NULL) |
705 | return -EOPNOTSUPP; | 705 | return -EOPNOTSUPP; |
706 | 706 | ||
707 | ssp = sock->sk->sk_security; | 707 | ssp = sock->sk->sk_security; |
@@ -1280,10 +1280,11 @@ static void smack_to_secattr(char *smack, struct netlbl_lsm_secattr *nlsp) | |||
1280 | */ | 1280 | */ |
1281 | static int smack_netlabel(struct sock *sk) | 1281 | static int smack_netlabel(struct sock *sk) |
1282 | { | 1282 | { |
1283 | struct socket_smack *ssp = sk->sk_security; | 1283 | struct socket_smack *ssp; |
1284 | struct netlbl_lsm_secattr secattr; | 1284 | struct netlbl_lsm_secattr secattr; |
1285 | int rc = 0; | 1285 | int rc = 0; |
1286 | 1286 | ||
1287 | ssp = sk->sk_security; | ||
1287 | netlbl_secattr_init(&secattr); | 1288 | netlbl_secattr_init(&secattr); |
1288 | smack_to_secattr(ssp->smk_out, &secattr); | 1289 | smack_to_secattr(ssp->smk_out, &secattr); |
1289 | if (secattr.flags != NETLBL_SECATTR_NONE) | 1290 | if (secattr.flags != NETLBL_SECATTR_NONE) |
@@ -1331,7 +1332,7 @@ static int smack_inode_setsecurity(struct inode *inode, const char *name, | |||
1331 | return -EOPNOTSUPP; | 1332 | return -EOPNOTSUPP; |
1332 | 1333 | ||
1333 | sock = SOCKET_I(inode); | 1334 | sock = SOCKET_I(inode); |
1334 | if (sock == NULL) | 1335 | if (sock == NULL || sock->sk == NULL) |
1335 | return -EOPNOTSUPP; | 1336 | return -EOPNOTSUPP; |
1336 | 1337 | ||
1337 | ssp = sock->sk->sk_security; | 1338 | ssp = sock->sk->sk_security; |
@@ -1362,7 +1363,7 @@ static int smack_inode_setsecurity(struct inode *inode, const char *name, | |||
1362 | static int smack_socket_post_create(struct socket *sock, int family, | 1363 | static int smack_socket_post_create(struct socket *sock, int family, |
1363 | int type, int protocol, int kern) | 1364 | int type, int protocol, int kern) |
1364 | { | 1365 | { |
1365 | if (family != PF_INET) | 1366 | if (family != PF_INET || sock->sk == NULL) |
1366 | return 0; | 1367 | return 0; |
1367 | /* | 1368 | /* |
1368 | * Set the outbound netlbl. | 1369 | * Set the outbound netlbl. |