diff --git a/net/ieee802154/socket.c b/net/ieee802154/socket.c
index badc5cfe4dc63e1660696443e7f01e5707e81206..d93d4531aa9bc5997df13ab6bf606d7f69e512b2 100644
--- a/net/ieee802154/socket.c
+++ b/net/ieee802154/socket.c
@@ -1008,6 +1008,9 @@ static int ieee802154_create(struct net *net, struct socket *sock,
 
 	switch (sock->type) {
 	case SOCK_RAW:
+		rc = -EPERM;
+		if (!capable(CAP_NET_RAW))
+			goto out;
 		proto = &ieee802154_raw_prot;
 		ops = &ieee802154_raw_ops;
 		break;