Commit 130c5860 authored by Jason A. Donenfeld's avatar Jason A. Donenfeld Committed by David S. Miller
Browse files

wireguard: queueing: cleanup ptr_ring in error path of packet_queue_init



Prior, if the alloc_percpu of packet_percpu_multicore_worker_alloc
failed, the previously allocated ptr_ring wouldn't be freed. This commit
adds the missing call to ptr_ring_cleanup in the error case.

Reported-by: default avatarSultan Alsawaf <sultan@kerneltoast.com>
Fixes: e7096c13 ("net: WireGuard secure network tunnel")
Signed-off-by: default avatarJason A. Donenfeld <Jason@zx2c4.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent d6833e42
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -35,8 +35,10 @@ int wg_packet_queue_init(struct crypt_queue *queue, work_func_t function,
		if (multicore) {
			queue->worker = wg_packet_percpu_multicore_worker_alloc(
				function, queue);
			if (!queue->worker)
			if (!queue->worker) {
				ptr_ring_cleanup(&queue->ring, NULL);
				return -ENOMEM;
			}
		} else {
			INIT_WORK(&queue->work, function);
		}