c
// Hypothetical changes elsewhere in the code
struct netvsc_device {
    // ...
    atomic_t recv_buf_refcnt;
    // ...
};

// When allocating recv_buf
atomic_set(&nvdev->recv_buf_refcnt, 1);

// When freeing
7 	kfree(nvdev->extension);
8 	if (atomic_dec_and_test(&nvdev->recv_buf_refcnt)) {
9 		vfree(nvdev->recv_buf);
10 	}
