Skip to content

Commit dcdc2e8

Browse files
committed
tgupdate: merge t/DO-NOT-MERGE-mptcp-use-kmalloc-on-kasan-build base into t/DO-NOT-MERGE-mptcp-use-kmalloc-on-kasan-build
2 parents 9b57a95 + c560bc8 commit dcdc2e8

File tree

1 file changed

+27
-22
lines changed

1 file changed

+27
-22
lines changed

net/llc/llc_s_ac.c

Lines changed: 27 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
#include <net/llc_s_ac.h>
2525
#include <net/llc_s_ev.h>
2626
#include <net/llc_sap.h>
27-
27+
#include <net/sock.h>
2828

2929
/**
3030
* llc_sap_action_unitdata_ind - forward UI PDU to network layer
@@ -40,6 +40,26 @@ int llc_sap_action_unitdata_ind(struct llc_sap *sap, struct sk_buff *skb)
4040
return 0;
4141
}
4242

43+
static int llc_prepare_and_xmit(struct sk_buff *skb)
44+
{
45+
struct llc_sap_state_ev *ev = llc_sap_ev(skb);
46+
struct sk_buff *nskb;
47+
int rc;
48+
49+
rc = llc_mac_hdr_init(skb, ev->saddr.mac, ev->daddr.mac);
50+
if (rc)
51+
return rc;
52+
53+
nskb = skb_clone(skb, GFP_ATOMIC);
54+
if (!nskb)
55+
return -ENOMEM;
56+
57+
if (skb->sk)
58+
skb_set_owner_w(nskb, skb->sk);
59+
60+
return dev_queue_xmit(nskb);
61+
}
62+
4363
/**
4464
* llc_sap_action_send_ui - sends UI PDU resp to UNITDATA REQ to MAC layer
4565
* @sap: SAP
@@ -52,17 +72,12 @@ int llc_sap_action_unitdata_ind(struct llc_sap *sap, struct sk_buff *skb)
5272
int llc_sap_action_send_ui(struct llc_sap *sap, struct sk_buff *skb)
5373
{
5474
struct llc_sap_state_ev *ev = llc_sap_ev(skb);
55-
int rc;
5675

5776
llc_pdu_header_init(skb, LLC_PDU_TYPE_U, ev->saddr.lsap,
5877
ev->daddr.lsap, LLC_PDU_CMD);
5978
llc_pdu_init_as_ui_cmd(skb);
60-
rc = llc_mac_hdr_init(skb, ev->saddr.mac, ev->daddr.mac);
61-
if (likely(!rc)) {
62-
skb_get(skb);
63-
rc = dev_queue_xmit(skb);
64-
}
65-
return rc;
79+
80+
return llc_prepare_and_xmit(skb);
6681
}
6782

6883
/**
@@ -77,17 +92,12 @@ int llc_sap_action_send_ui(struct llc_sap *sap, struct sk_buff *skb)
7792
int llc_sap_action_send_xid_c(struct llc_sap *sap, struct sk_buff *skb)
7893
{
7994
struct llc_sap_state_ev *ev = llc_sap_ev(skb);
80-
int rc;
8195

8296
llc_pdu_header_init(skb, LLC_PDU_TYPE_U_XID, ev->saddr.lsap,
8397
ev->daddr.lsap, LLC_PDU_CMD);
8498
llc_pdu_init_as_xid_cmd(skb, LLC_XID_NULL_CLASS_2, 0);
85-
rc = llc_mac_hdr_init(skb, ev->saddr.mac, ev->daddr.mac);
86-
if (likely(!rc)) {
87-
skb_get(skb);
88-
rc = dev_queue_xmit(skb);
89-
}
90-
return rc;
99+
100+
return llc_prepare_and_xmit(skb);
91101
}
92102

93103
/**
@@ -133,17 +143,12 @@ int llc_sap_action_send_xid_r(struct llc_sap *sap, struct sk_buff *skb)
133143
int llc_sap_action_send_test_c(struct llc_sap *sap, struct sk_buff *skb)
134144
{
135145
struct llc_sap_state_ev *ev = llc_sap_ev(skb);
136-
int rc;
137146

138147
llc_pdu_header_init(skb, LLC_PDU_TYPE_U, ev->saddr.lsap,
139148
ev->daddr.lsap, LLC_PDU_CMD);
140149
llc_pdu_init_as_test_cmd(skb);
141-
rc = llc_mac_hdr_init(skb, ev->saddr.mac, ev->daddr.mac);
142-
if (likely(!rc)) {
143-
skb_get(skb);
144-
rc = dev_queue_xmit(skb);
145-
}
146-
return rc;
150+
151+
return llc_prepare_and_xmit(skb);
147152
}
148153

149154
int llc_sap_action_send_test_r(struct llc_sap *sap, struct sk_buff *skb)

0 commit comments

Comments
 (0)