[dpdk-dev] vhost: fix use after free issue

Message ID 1476801486-4618-1-git-send-email-yuanhan.liu@linux.intel.com (mailing list archive)
State Accepted, archived
Delegated to: Yuanhan Liu
Headers

Commit Message

Yuanhan Liu Oct. 18, 2016, 2:38 p.m. UTC
  Fix the coverity USE_AFTER_FREE issue.

Fixes: a277c7159876 ("vhost: refactor code structure")
Coverity issue: 137884

Reported-by: John McNamara <john.mcnamara@intel.com>
Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
---
 lib/librte_vhost/socket.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Yuanhan Liu Oct. 21, 2016, 7:52 a.m. UTC | #1
On Tue, Oct 18, 2016 at 10:38:06PM +0800, Yuanhan Liu wrote:
> Fix the coverity USE_AFTER_FREE issue.
> 
> Fixes: a277c7159876 ("vhost: refactor code structure")
> Coverity issue: 137884
> 
> Reported-by: John McNamara <john.mcnamara@intel.com>
> Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>

Applied to dpdk-next-virtio.

	--yliu
> ---
>  lib/librte_vhost/socket.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/lib/librte_vhost/socket.c b/lib/librte_vhost/socket.c
> index 967cb65..aaa9c27 100644
> --- a/lib/librte_vhost/socket.c
> +++ b/lib/librte_vhost/socket.c
> @@ -250,8 +250,8 @@ vhost_user_read_cb(int connfd, void *dat, int *remove)
>  		vsocket->connfd = -1;
>  		close(connfd);
>  		*remove = 1;
> -		free(conn);
>  		vhost_destroy_device(conn->vid);
> +		free(conn);
>  
>  		if (vsocket->reconnect)
>  			vhost_user_create_client(vsocket);
> -- 
> 1.9.0
  

Patch

diff --git a/lib/librte_vhost/socket.c b/lib/librte_vhost/socket.c
index 967cb65..aaa9c27 100644
--- a/lib/librte_vhost/socket.c
+++ b/lib/librte_vhost/socket.c
@@ -250,8 +250,8 @@  vhost_user_read_cb(int connfd, void *dat, int *remove)
 		vsocket->connfd = -1;
 		close(connfd);
 		*remove = 1;
-		free(conn);
 		vhost_destroy_device(conn->vid);
+		free(conn);
 
 		if (vsocket->reconnect)
 			vhost_user_create_client(vsocket);