@@ -789,14 +789,13 @@ static void virtio_fs_init_vq(struct virtio_fs_vq *fsvq, char *name,
789789static int virtio_fs_setup_vqs (struct virtio_device * vdev ,
790790 struct virtio_fs * fs )
791791{
792+ struct virtqueue_info * vqs_info ;
792793 struct virtqueue * * vqs ;
793- vq_callback_t * * callbacks ;
794794 /* Specify pre_vectors to ensure that the queues before the
795795 * request queues (e.g. hiprio) don't claim any of the CPUs in
796796 * the multi-queue mapping and interrupt affinities
797797 */
798798 struct irq_affinity desc = { .pre_vectors = VQ_REQUEST };
799- const char * * names ;
800799 unsigned int i ;
801800 int ret = 0 ;
802801
@@ -814,32 +813,30 @@ static int virtio_fs_setup_vqs(struct virtio_device *vdev,
814813 return - ENOMEM ;
815814
816815 vqs = kmalloc_array (fs -> nvqs , sizeof (vqs [VQ_HIPRIO ]), GFP_KERNEL );
817- callbacks = kmalloc_array (fs -> nvqs , sizeof (callbacks [VQ_HIPRIO ]),
818- GFP_KERNEL );
819- names = kmalloc_array (fs -> nvqs , sizeof (names [VQ_HIPRIO ]), GFP_KERNEL );
820816 fs -> mq_map = kcalloc_node (nr_cpu_ids , sizeof (* fs -> mq_map ), GFP_KERNEL ,
821817 dev_to_node (& vdev -> dev ));
822- if (!vqs || !callbacks || !names || !fs -> mq_map ) {
818+ vqs_info = kcalloc (fs -> nvqs , sizeof (* vqs_info ), GFP_KERNEL );
819+ if (!vqs || !vqs_info || !fs -> mq_map ) {
823820 ret = - ENOMEM ;
824821 goto out ;
825822 }
826823
827824 /* Initialize the hiprio/forget request virtqueue */
828- callbacks [VQ_HIPRIO ] = virtio_fs_vq_done ;
825+ vqs_info [VQ_HIPRIO ]. callback = virtio_fs_vq_done ;
829826 virtio_fs_init_vq (& fs -> vqs [VQ_HIPRIO ], "hiprio" , VQ_HIPRIO );
830- names [VQ_HIPRIO ] = fs -> vqs [VQ_HIPRIO ].name ;
827+ vqs_info [VQ_HIPRIO ]. name = fs -> vqs [VQ_HIPRIO ].name ;
831828
832829 /* Initialize the requests virtqueues */
833830 for (i = VQ_REQUEST ; i < fs -> nvqs ; i ++ ) {
834831 char vq_name [VQ_NAME_LEN ];
835832
836833 snprintf (vq_name , VQ_NAME_LEN , "requests.%u" , i - VQ_REQUEST );
837834 virtio_fs_init_vq (& fs -> vqs [i ], vq_name , VQ_REQUEST );
838- callbacks [i ] = virtio_fs_vq_done ;
839- names [i ] = fs -> vqs [i ].name ;
835+ vqs_info [i ]. callback = virtio_fs_vq_done ;
836+ vqs_info [i ]. name = fs -> vqs [i ].name ;
840837 }
841838
842- ret = virtio_find_vqs (vdev , fs -> nvqs , vqs , callbacks , names , & desc );
839+ ret = virtio_find_vqs_info (vdev , fs -> nvqs , vqs , vqs_info , & desc );
843840 if (ret < 0 )
844841 goto out ;
845842
@@ -848,8 +845,7 @@ static int virtio_fs_setup_vqs(struct virtio_device *vdev,
848845
849846 virtio_fs_start_all_queues (fs );
850847out :
851- kfree (names );
852- kfree (callbacks );
848+ kfree (vqs_info );
853849 kfree (vqs );
854850 if (ret ) {
855851 kfree (fs -> vqs );
0 commit comments