diff
 static void free_netvsc_device(struct rcu_head *head)
 {
 	struct netvsc_device *nvdev
 		= container_of(head, struct netvsc_device, rcu);
 	int i;
+	struct netvsc_channel *chan_table = nvdev->chan_table;
 
 	kfree(nvdev->extension);
 	vfree(nvdev->recv_buf);
 	vfree(nvdev->send_buf);
 	bitmap_free(nvdev->send_section_map);
 
 	for (i = 0; i < VRSS_CHANNEL_MAX; i++) {
-		xdp_rxq_info_unreg(&nvdev->chan_table[i].xdp_rxq);
-		kfree(nvdev->chan_table[i].recv_buf);
-		vfree(nvdev->chan_table[i].mrc.slots);
+		xdp_rxq_info_unreg(&chan_table[i].xdp_rxq);
+		kfree(chan_table[i].recv_buf);
+		vfree(chan_table[i].mrc.slots);
 	}
 	kfree(nvdev);
 }
