diff options
Diffstat (limited to 'net/packet/af_packet.c')
-rw-r--r-- | net/packet/af_packet.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c index 12f2f725a945..d711ecbbb9d3 100644 --- a/net/packet/af_packet.c +++ b/net/packet/af_packet.c | |||
@@ -1584,7 +1584,7 @@ static int packet_sendmsg_spkt(struct kiocb *iocb, struct socket *sock, | |||
1584 | struct msghdr *msg, size_t len) | 1584 | struct msghdr *msg, size_t len) |
1585 | { | 1585 | { |
1586 | struct sock *sk = sock->sk; | 1586 | struct sock *sk = sock->sk; |
1587 | struct sockaddr_pkt *saddr = (struct sockaddr_pkt *)msg->msg_name; | 1587 | DECLARE_SOCKADDR(struct sockaddr_pkt *, saddr, msg->msg_name); |
1588 | struct sk_buff *skb = NULL; | 1588 | struct sk_buff *skb = NULL; |
1589 | struct net_device *dev; | 1589 | struct net_device *dev; |
1590 | __be16 proto = 0; | 1590 | __be16 proto = 0; |
@@ -2196,7 +2196,7 @@ static int tpacket_snd(struct packet_sock *po, struct msghdr *msg) | |||
2196 | __be16 proto; | 2196 | __be16 proto; |
2197 | int err, reserve = 0; | 2197 | int err, reserve = 0; |
2198 | void *ph; | 2198 | void *ph; |
2199 | struct sockaddr_ll *saddr = (struct sockaddr_ll *)msg->msg_name; | 2199 | DECLARE_SOCKADDR(struct sockaddr_ll *, saddr, msg->msg_name); |
2200 | bool need_wait = !(msg->msg_flags & MSG_DONTWAIT); | 2200 | bool need_wait = !(msg->msg_flags & MSG_DONTWAIT); |
2201 | int tp_len, size_max; | 2201 | int tp_len, size_max; |
2202 | unsigned char *addr; | 2202 | unsigned char *addr; |
@@ -2346,7 +2346,7 @@ static struct sk_buff *packet_alloc_skb(struct sock *sk, size_t prepad, | |||
2346 | static int packet_snd(struct socket *sock, struct msghdr *msg, size_t len) | 2346 | static int packet_snd(struct socket *sock, struct msghdr *msg, size_t len) |
2347 | { | 2347 | { |
2348 | struct sock *sk = sock->sk; | 2348 | struct sock *sk = sock->sk; |
2349 | struct sockaddr_ll *saddr = (struct sockaddr_ll *)msg->msg_name; | 2349 | DECLARE_SOCKADDR(struct sockaddr_ll *, saddr, msg->msg_name); |
2350 | struct sk_buff *skb; | 2350 | struct sk_buff *skb; |
2351 | struct net_device *dev; | 2351 | struct net_device *dev; |
2352 | __be16 proto; | 2352 | __be16 proto; |
@@ -2922,6 +2922,7 @@ static int packet_recvmsg(struct kiocb *iocb, struct socket *sock, | |||
2922 | * in, we fill it in now. | 2922 | * in, we fill it in now. |
2923 | */ | 2923 | */ |
2924 | if (sock->type == SOCK_PACKET) { | 2924 | if (sock->type == SOCK_PACKET) { |
2925 | __sockaddr_check_size(sizeof(struct sockaddr_pkt)); | ||
2925 | msg->msg_namelen = sizeof(struct sockaddr_pkt); | 2926 | msg->msg_namelen = sizeof(struct sockaddr_pkt); |
2926 | } else { | 2927 | } else { |
2927 | struct sockaddr_ll *sll = &PACKET_SKB_CB(skb)->sa.ll; | 2928 | struct sockaddr_ll *sll = &PACKET_SKB_CB(skb)->sa.ll; |