@@ -2105,7 +2105,8 @@ static int unix_dgram_sendmsg(struct socket *sock, struct msghdr *msg,
2105
2105
#define UNIX_SKB_FRAGS_SZ (PAGE_SIZE << get_order(32768))
2106
2106
2107
2107
#if IS_ENABLED (CONFIG_AF_UNIX_OOB )
2108
- static int queue_oob (struct socket * sock , struct msghdr * msg , struct sock * other )
2108
+ static int queue_oob (struct socket * sock , struct msghdr * msg , struct sock * other ,
2109
+ struct scm_cookie * scm , bool fds_sent )
2109
2110
{
2110
2111
struct unix_sock * ousk = unix_sk (other );
2111
2112
struct sk_buff * skb ;
@@ -2116,6 +2117,11 @@ static int queue_oob(struct socket *sock, struct msghdr *msg, struct sock *other
2116
2117
if (!skb )
2117
2118
return err ;
2118
2119
2120
+ err = unix_scm_to_skb (scm , skb , !fds_sent );
2121
+ if (err < 0 ) {
2122
+ kfree_skb (skb );
2123
+ return err ;
2124
+ }
2119
2125
skb_put (skb , 1 );
2120
2126
err = skb_copy_datagram_from_iter (skb , 0 , & msg -> msg_iter , 1 );
2121
2127
@@ -2243,7 +2249,7 @@ static int unix_stream_sendmsg(struct socket *sock, struct msghdr *msg,
2243
2249
2244
2250
#if IS_ENABLED (CONFIG_AF_UNIX_OOB )
2245
2251
if (msg -> msg_flags & MSG_OOB ) {
2246
- err = queue_oob (sock , msg , other );
2252
+ err = queue_oob (sock , msg , other , & scm , fds_sent );
2247
2253
if (err )
2248
2254
goto out_err ;
2249
2255
sent ++ ;
0 commit comments