@@ -1350,7 +1350,7 @@ static void ip6_append_data_mtu(unsigned int *mtu,
1350
1350
1351
1351
static int ip6_setup_cork (struct sock * sk , struct inet_cork_full * cork ,
1352
1352
struct inet6_cork * v6_cork , struct ipcm6_cookie * ipc6 ,
1353
- struct rt6_info * rt , struct flowi6 * fl6 )
1353
+ struct rt6_info * rt )
1354
1354
{
1355
1355
struct ipv6_pinfo * np = inet6_sk (sk );
1356
1356
unsigned int mtu ;
@@ -1391,7 +1391,6 @@ static int ip6_setup_cork(struct sock *sk, struct inet_cork_full *cork,
1391
1391
}
1392
1392
dst_hold (& rt -> dst );
1393
1393
cork -> base .dst = & rt -> dst ;
1394
- cork -> fl .u .ip6 = * fl6 ;
1395
1394
v6_cork -> hop_limit = ipc6 -> hlimit ;
1396
1395
v6_cork -> tclass = ipc6 -> tclass ;
1397
1396
if (rt -> dst .flags & DST_XFRM_TUNNEL )
@@ -1422,7 +1421,6 @@ static int ip6_setup_cork(struct sock *sk, struct inet_cork_full *cork,
1422
1421
}
1423
1422
1424
1423
static int __ip6_append_data (struct sock * sk ,
1425
- struct flowi6 * fl6 ,
1426
1424
struct sk_buff_head * queue ,
1427
1425
struct inet_cork_full * cork_full ,
1428
1426
struct inet6_cork * v6_cork ,
@@ -1434,6 +1432,7 @@ static int __ip6_append_data(struct sock *sk,
1434
1432
{
1435
1433
struct sk_buff * skb , * skb_prev = NULL ;
1436
1434
struct inet_cork * cork = & cork_full -> base ;
1435
+ struct flowi6 * fl6 = & cork_full -> fl .u .ip6 ;
1437
1436
unsigned int maxfraglen , fragheaderlen , mtu , orig_mtu , pmtu ;
1438
1437
struct ubuf_info * uarg = NULL ;
1439
1438
int exthdrlen = 0 ;
@@ -1786,19 +1785,19 @@ int ip6_append_data(struct sock *sk,
1786
1785
* setup for corking
1787
1786
*/
1788
1787
err = ip6_setup_cork (sk , & inet -> cork , & np -> cork ,
1789
- ipc6 , rt , fl6 );
1788
+ ipc6 , rt );
1790
1789
if (err )
1791
1790
return err ;
1792
1791
1792
+ inet -> cork .fl .u .ip6 = * fl6 ;
1793
1793
exthdrlen = (ipc6 -> opt ? ipc6 -> opt -> opt_flen : 0 );
1794
1794
length += exthdrlen ;
1795
1795
transhdrlen += exthdrlen ;
1796
1796
} else {
1797
- fl6 = & inet -> cork .fl .u .ip6 ;
1798
1797
transhdrlen = 0 ;
1799
1798
}
1800
1799
1801
- return __ip6_append_data (sk , fl6 , & sk -> sk_write_queue , & inet -> cork ,
1800
+ return __ip6_append_data (sk , & sk -> sk_write_queue , & inet -> cork ,
1802
1801
& np -> cork , sk_page_frag (sk ), getfrag ,
1803
1802
from , length , transhdrlen , flags , ipc6 );
1804
1803
}
@@ -1967,9 +1966,8 @@ struct sk_buff *ip6_make_skb(struct sock *sk,
1967
1966
int getfrag (void * from , char * to , int offset ,
1968
1967
int len , int odd , struct sk_buff * skb ),
1969
1968
void * from , int length , int transhdrlen ,
1970
- struct ipcm6_cookie * ipc6 , struct flowi6 * fl6 ,
1971
- struct rt6_info * rt , unsigned int flags ,
1972
- struct inet_cork_full * cork )
1969
+ struct ipcm6_cookie * ipc6 , struct rt6_info * rt ,
1970
+ unsigned int flags , struct inet_cork_full * cork )
1973
1971
{
1974
1972
struct inet6_cork v6_cork ;
1975
1973
struct sk_buff_head queue ;
@@ -1986,15 +1984,15 @@ struct sk_buff *ip6_make_skb(struct sock *sk,
1986
1984
cork -> base .opt = NULL ;
1987
1985
cork -> base .dst = NULL ;
1988
1986
v6_cork .opt = NULL ;
1989
- err = ip6_setup_cork (sk , cork , & v6_cork , ipc6 , rt , fl6 );
1987
+ err = ip6_setup_cork (sk , cork , & v6_cork , ipc6 , rt );
1990
1988
if (err ) {
1991
1989
ip6_cork_release (cork , & v6_cork );
1992
1990
return ERR_PTR (err );
1993
1991
}
1994
1992
if (ipc6 -> dontfrag < 0 )
1995
1993
ipc6 -> dontfrag = inet6_sk (sk )-> dontfrag ;
1996
1994
1997
- err = __ip6_append_data (sk , fl6 , & queue , cork , & v6_cork ,
1995
+ err = __ip6_append_data (sk , & queue , cork , & v6_cork ,
1998
1996
& current -> task_frag , getfrag , from ,
1999
1997
length + exthdrlen , transhdrlen + exthdrlen ,
2000
1998
flags , ipc6 );
0 commit comments