diff options
Diffstat (limited to 'net/rxrpc/ar-connevent.c')
-rw-r--r-- | net/rxrpc/ar-connevent.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/net/rxrpc/ar-connevent.c b/net/rxrpc/ar-connevent.c index 4b02815c1ded..1ada43d51165 100644 --- a/net/rxrpc/ar-connevent.c +++ b/net/rxrpc/ar-connevent.c | |||
@@ -45,7 +45,7 @@ static void rxrpc_abort_calls(struct rxrpc_connection *conn, int state, | |||
45 | set_bit(RXRPC_CALL_CONN_ABORT, &call->events); | 45 | set_bit(RXRPC_CALL_CONN_ABORT, &call->events); |
46 | else | 46 | else |
47 | set_bit(RXRPC_CALL_RCVD_ABORT, &call->events); | 47 | set_bit(RXRPC_CALL_RCVD_ABORT, &call->events); |
48 | schedule_work(&call->processor); | 48 | rxrpc_queue_call(call); |
49 | } | 49 | } |
50 | write_unlock(&call->state_lock); | 50 | write_unlock(&call->state_lock); |
51 | } | 51 | } |
@@ -133,7 +133,7 @@ void rxrpc_call_is_secure(struct rxrpc_call *call) | |||
133 | read_lock(&call->state_lock); | 133 | read_lock(&call->state_lock); |
134 | if (call->state < RXRPC_CALL_COMPLETE && | 134 | if (call->state < RXRPC_CALL_COMPLETE && |
135 | !test_and_set_bit(RXRPC_CALL_SECURED, &call->events)) | 135 | !test_and_set_bit(RXRPC_CALL_SECURED, &call->events)) |
136 | schedule_work(&call->processor); | 136 | rxrpc_queue_call(call); |
137 | read_unlock(&call->state_lock); | 137 | read_unlock(&call->state_lock); |
138 | } | 138 | } |
139 | } | 139 | } |
@@ -308,6 +308,22 @@ protocol_error: | |||
308 | } | 308 | } |
309 | 309 | ||
310 | /* | 310 | /* |
311 | * put a packet up for transport-level abort | ||
312 | */ | ||
313 | void rxrpc_reject_packet(struct rxrpc_local *local, struct sk_buff *skb) | ||
314 | { | ||
315 | CHECK_SLAB_OKAY(&local->usage); | ||
316 | |||
317 | if (!atomic_inc_not_zero(&local->usage)) { | ||
318 | printk("resurrected on reject\n"); | ||
319 | BUG(); | ||
320 | } | ||
321 | |||
322 | skb_queue_tail(&local->reject_queue, skb); | ||
323 | rxrpc_queue_work(&local->rejecter); | ||
324 | } | ||
325 | |||
326 | /* | ||
311 | * reject packets through the local endpoint | 327 | * reject packets through the local endpoint |
312 | */ | 328 | */ |
313 | void rxrpc_reject_packets(struct work_struct *work) | 329 | void rxrpc_reject_packets(struct work_struct *work) |