@@ -1958,8 +1958,7 @@ int tcp_recvmsg(struct sock *sk, struct msghdr *msg, size_t len, int nonblock,
1958
1958
struct sk_buff * skb , * last ;
1959
1959
u32 urg_hole = 0 ;
1960
1960
struct scm_timestamping_internal tss ;
1961
- bool has_tss = false;
1962
- bool has_cmsg ;
1961
+ int cmsg_flags ;
1963
1962
1964
1963
if (unlikely (flags & MSG_ERRQUEUE ))
1965
1964
return inet_recv_error (sk , msg , len , addr_len );
@@ -1974,7 +1973,7 @@ int tcp_recvmsg(struct sock *sk, struct msghdr *msg, size_t len, int nonblock,
1974
1973
if (sk -> sk_state == TCP_LISTEN )
1975
1974
goto out ;
1976
1975
1977
- has_cmsg = tp -> recvmsg_inq ;
1976
+ cmsg_flags = tp -> recvmsg_inq ? 1 : 0 ;
1978
1977
timeo = sock_rcvtimeo (sk , nonblock );
1979
1978
1980
1979
/* Urgent data needs to be handled specially. */
@@ -2157,8 +2156,7 @@ int tcp_recvmsg(struct sock *sk, struct msghdr *msg, size_t len, int nonblock,
2157
2156
2158
2157
if (TCP_SKB_CB (skb )-> has_rxtstamp ) {
2159
2158
tcp_update_recv_tstamps (skb , & tss );
2160
- has_tss = true;
2161
- has_cmsg = true;
2159
+ cmsg_flags |= 2 ;
2162
2160
}
2163
2161
if (TCP_SKB_CB (skb )-> tcp_flags & TCPHDR_FIN )
2164
2162
goto found_fin_ok ;
@@ -2183,10 +2181,10 @@ int tcp_recvmsg(struct sock *sk, struct msghdr *msg, size_t len, int nonblock,
2183
2181
2184
2182
release_sock (sk );
2185
2183
2186
- if (has_cmsg ) {
2187
- if (has_tss )
2184
+ if (cmsg_flags ) {
2185
+ if (cmsg_flags & 2 )
2188
2186
tcp_recv_timestamp (msg , sk , & tss );
2189
- if (tp -> recvmsg_inq ) {
2187
+ if (cmsg_flags & 1 ) {
2190
2188
inq = tcp_inq_hint (sk );
2191
2189
put_cmsg (msg , SOL_TCP , TCP_CM_INQ , sizeof (inq ), & inq );
2192
2190
}
0 commit comments