--- zzzz-none-000/linux-4.9.279/net/netlink/af_netlink.c 2021-08-08 06:38:54.000000000 +0000 +++ puma7-atom-6591-750/linux-4.9.279/net/netlink/af_netlink.c 2023-02-08 11:43:43.000000000 +0000 @@ -1294,14 +1294,14 @@ return ret; } -int netlink_unicast(struct sock *ssk, struct sk_buff *skb, - u32 portid, int nonblock) +int netlink_unicast_intel(struct sock *ssk, struct sk_buff *skb, + u32 portid, int nonblock, gfp_t allocation) { struct sock *sk; int err; long timeo; - skb = netlink_trim(skb, gfp_any()); + skb = netlink_trim(skb, allocation ? allocation : gfp_any()); timeo = sock_sndtimeo(ssk, nonblock); retry: @@ -1328,7 +1328,7 @@ return netlink_sendskb(sk, skb); } -EXPORT_SYMBOL(netlink_unicast); +EXPORT_SYMBOL(netlink_unicast_intel); int netlink_has_listeners(struct sock *sk, unsigned int group) { @@ -1859,7 +1859,7 @@ atomic_inc(&skb->users); netlink_broadcast(sk, skb, dst_portid, dst_group, GFP_KERNEL); } - err = netlink_unicast(sk, skb, dst_portid, msg->msg_flags&MSG_DONTWAIT); + err = netlink_unicast(sk, skb, dst_portid, msg->msg_flags&MSG_DONTWAIT, 0); out: scm_destroy(&scm); @@ -2338,7 +2338,7 @@ errmsg = nlmsg_data(rep); errmsg->error = err; memcpy(&errmsg->msg, nlh, payload > sizeof(*errmsg) ? nlh->nlmsg_len : sizeof(*nlh)); - netlink_unicast(in_skb->sk, skb, NETLINK_CB(in_skb).portid, MSG_DONTWAIT); + netlink_unicast(in_skb->sk, skb, NETLINK_CB(in_skb).portid, MSG_DONTWAIT, 0); } EXPORT_SYMBOL(netlink_ack); @@ -2414,7 +2414,7 @@ if (report) { int err2; - err2 = nlmsg_unicast(sk, skb, portid); + err2 = nlmsg_unicast(sk, skb, portid, flags); if (!err || err == -ESRCH) err = err2; }