Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932931AbdCJSMj (ORCPT ); Fri, 10 Mar 2017 13:12:39 -0500 Received: from mail-wm0-f65.google.com ([74.125.82.65]:35356 "EHLO mail-wm0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755050AbdCJSMd (ORCPT ); Fri, 10 Mar 2017 13:12:33 -0500 Subject: Re: [PATCH] drm: virtio: use kmem_cache To: Gerd Hoffmann , dri-devel@lists.freedesktop.org References: <1488377348-5006-1-git-send-email-kraxel@redhat.com> Cc: David Airlie , "open list:VIRTIO GPU DRIVER" , open list From: Jiri Slaby Message-ID: <9a241e38-c263-f50d-120c-17fdda9d2499@suse.cz> Date: Fri, 10 Mar 2017 19:12:24 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.1 MIME-Version: 1.0 In-Reply-To: <1488377348-5006-1-git-send-email-kraxel@redhat.com> Content-Type: text/plain; charset=iso-8859-2 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1121 Lines: 37 On 03/01/2017, 03:09 PM, Gerd Hoffmann wrote: > @@ -128,12 +96,9 @@ void virtio_gpu_free_vbufs(struct virtio_gpu_device *vgdev) > { > struct virtio_gpu_vbuffer *vbuf; > > - spin_lock(&vgdev->free_vbufs_lock); > - BUG_ON(list_empty(&vgdev->free_vbufs)); > - vbuf = list_first_entry(&vgdev->free_vbufs, > - struct virtio_gpu_vbuffer, list); > - list_del(&vbuf->list); > - spin_unlock(&vgdev->free_vbufs_lock); > + vbuf = kmem_cache_alloc(vgdev->vbufs, GFP_KERNEL); > + if (IS_ERR(vbuf)) > + return ERR_CAST(vbuf); AFAICS kmem_cache_alloc returns NULL on error. > memset(vbuf, 0, VBUFFER_SIZE); > > BUG_ON(size > MAX_INLINE_CMD_SIZE); > @@ -208,9 +173,7 @@ static void free_vbuf(struct virtio_gpu_device *vgdev, > if (vbuf->resp_size > MAX_INLINE_RESP_SIZE) > kfree(vbuf->resp_buf); > kfree(vbuf->data_buf); > - spin_lock(&vgdev->free_vbufs_lock); > - list_add(&vbuf->list, &vgdev->free_vbufs); > - spin_unlock(&vgdev->free_vbufs_lock); > + kmem_cache_free(vgdev->vbufs, vbuf); > } > > static void reclaim_vbufs(struct virtqueue *vq, struct list_head *reclaim_list) > regards, -- js suse labs