[dpdk-dev] vhost: check malloc return value when allocating guest pages

Message ID 20170511152526.18379-1-jfreimann@redhat.com (mailing list archive)
State Accepted, archived
Delegated to: Yuanhan Liu
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Jens Freimann May 11, 2017, 3:25 p.m. UTC
  When we try to allocate guest pages we need to check the return value of
malloc(). Print an error message and return when it fails.

Signed-off-by: Jens Freimann <jfreimann@redhat.com>
---
 lib/librte_vhost/vhost_user.c | 7 +++++++
 1 file changed, 7 insertions(+)
  

Comments

Maxime Coquelin May 18, 2017, 8:14 a.m. UTC | #1
On 05/11/2017 05:25 PM, Jens Freimann wrote:
> When we try to allocate guest pages we need to check the return value of
> malloc(). Print an error message and return when it fails.
> 
> Signed-off-by: Jens Freimann <jfreimann@redhat.com>
> ---
>   lib/librte_vhost/vhost_user.c | 7 +++++++
>   1 file changed, 7 insertions(+)
> 
> diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
> index 5c8058b..437e41f 100644
> --- a/lib/librte_vhost/vhost_user.c
> +++ b/lib/librte_vhost/vhost_user.c
> @@ -515,6 +515,13 @@ vhost_user_set_mem_table(struct virtio_net *dev, struct VhostUserMsg *pmsg)
>   		dev->max_guest_pages = 8;
>   		dev->guest_pages = malloc(dev->max_guest_pages *
>   						sizeof(struct guest_page));
> +		if (dev->guest_pages == NULL) {
> +			RTE_LOG(ERR, VHOST_CONFIG,
> +				"(%d) failed to allocate memory "
> +				"for dev->guest_pages\n",
> +				dev->vid);
> +			return -1;
> +		}
>   	}
>   
>   	dev->mem = rte_zmalloc("vhost-mem-table", sizeof(struct rte_vhost_memory) +
> 

Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>

Thanks!
Maxime
  
Yuanhan Liu May 22, 2017, 6:37 a.m. UTC | #2
On Thu, May 18, 2017 at 10:14:26AM +0200, Maxime Coquelin wrote:
> 
> 
> On 05/11/2017 05:25 PM, Jens Freimann wrote:
> >When we try to allocate guest pages we need to check the return value of
> >malloc(). Print an error message and return when it fails.
> >
> >Signed-off-by: Jens Freimann <jfreimann@redhat.com>
> >---
> >  lib/librte_vhost/vhost_user.c | 7 +++++++
> >  1 file changed, 7 insertions(+)
> >
> >diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
> >index 5c8058b..437e41f 100644
> >--- a/lib/librte_vhost/vhost_user.c
> >+++ b/lib/librte_vhost/vhost_user.c
> >@@ -515,6 +515,13 @@ vhost_user_set_mem_table(struct virtio_net *dev, struct VhostUserMsg *pmsg)
> >  		dev->max_guest_pages = 8;
> >  		dev->guest_pages = malloc(dev->max_guest_pages *
> >  						sizeof(struct guest_page));
> >+		if (dev->guest_pages == NULL) {
> >+			RTE_LOG(ERR, VHOST_CONFIG,
> >+				"(%d) failed to allocate memory "
> >+				"for dev->guest_pages\n",
> >+				dev->vid);
> >+			return -1;
> >+		}
> >  	}
> >  	dev->mem = rte_zmalloc("vhost-mem-table", sizeof(struct rte_vhost_memory) +
> >
> 
> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>

Applied to dpdk-next-virtio.

Thanks.

	--yliu
  

Patch

diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
index 5c8058b..437e41f 100644
--- a/lib/librte_vhost/vhost_user.c
+++ b/lib/librte_vhost/vhost_user.c
@@ -515,6 +515,13 @@  vhost_user_set_mem_table(struct virtio_net *dev, struct VhostUserMsg *pmsg)
 		dev->max_guest_pages = 8;
 		dev->guest_pages = malloc(dev->max_guest_pages *
 						sizeof(struct guest_page));
+		if (dev->guest_pages == NULL) {
+			RTE_LOG(ERR, VHOST_CONFIG,
+				"(%d) failed to allocate memory "
+				"for dev->guest_pages\n",
+				dev->vid);
+			return -1;
+		}
 	}
 
 	dev->mem = rte_zmalloc("vhost-mem-table", sizeof(struct rte_vhost_memory) +