File tree 2 files changed +13
-3
lines changed 2 files changed +13
-3
lines changed Original file line number Diff line number Diff line change @@ -126,6 +126,16 @@ static void ccid2_change_l_seq_window(struct sock *sk, u64 val)
126
126
DCCPF_SEQ_WMAX ));
127
127
}
128
128
129
+ static void dccp_tasklet_schedule (struct sock * sk )
130
+ {
131
+ struct tasklet_struct * t = & dccp_sk (sk )-> dccps_xmitlet ;
132
+
133
+ if (!test_and_set_bit (TASKLET_STATE_SCHED , & t -> state )) {
134
+ sock_hold (sk );
135
+ __tasklet_schedule (t );
136
+ }
137
+ }
138
+
129
139
static void ccid2_hc_tx_rto_expire (unsigned long data )
130
140
{
131
141
struct sock * sk = (struct sock * )data ;
@@ -166,7 +176,7 @@ static void ccid2_hc_tx_rto_expire(unsigned long data)
166
176
167
177
/* if we were blocked before, we may now send cwnd=1 packet */
168
178
if (sender_was_blocked )
169
- tasklet_schedule ( & dccp_sk ( sk ) -> dccps_xmitlet );
179
+ dccp_tasklet_schedule ( sk );
170
180
/* restart backed-off timer */
171
181
sk_reset_timer (sk , & hc -> tx_rtotimer , jiffies + hc -> tx_rto );
172
182
out :
@@ -706,7 +716,7 @@ static void ccid2_hc_tx_packet_recv(struct sock *sk, struct sk_buff *skb)
706
716
done :
707
717
/* check if incoming Acks allow pending packets to be sent */
708
718
if (sender_was_blocked && !ccid2_cwnd_network_limited (hc ))
709
- tasklet_schedule ( & dccp_sk ( sk ) -> dccps_xmitlet );
719
+ dccp_tasklet_schedule ( sk );
710
720
dccp_ackvec_parsed_cleanup (& hc -> tx_av_chunks );
711
721
}
712
722
Original file line number Diff line number Diff line change @@ -230,12 +230,12 @@ static void dccp_write_xmitlet(unsigned long data)
230
230
else
231
231
dccp_write_xmit (sk );
232
232
bh_unlock_sock (sk );
233
+ sock_put (sk );
233
234
}
234
235
235
236
static void dccp_write_xmit_timer (unsigned long data )
236
237
{
237
238
dccp_write_xmitlet (data );
238
- sock_put ((struct sock * )data );
239
239
}
240
240
241
241
void dccp_init_xmit_timers (struct sock * sk )
You can’t perform that action at this time.
0 commit comments