qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] pseries: Add cleanup hook for PAPR virtual LAN


From: Alexander Graf
Subject: Re: [Qemu-devel] [PATCH] pseries: Add cleanup hook for PAPR virtual LAN device
Date: Tue, 12 Feb 2013 23:10:19 +0100

On 11.02.2013, at 05:59, David Gibson wrote:

> Currently the spapr-vlan device does not supply a cleanup call for its
> NetClientInfo structure.  With current qemu versions, that leads to a SEGV
> on exit, when net_cleanup() attempts to call the cleanup handlers on all
> net clients.
> 
> Signed-off-by: David Gibson <address@hidden>

The offending patch breaks more than just spapr. We need to revert the bit that 
checks for the existence of a cleanup function.

However, I'll still apply this to ppc-next. It's a good idea to make the 
cleanup function mandatory. In fact, couldn't we add a runtime check that 
mandatory callback functions actually exist when registering a NetClientInfo?


Alex

> ---
> hw/spapr_llan.c |    8 ++++++++
> 1 file changed, 8 insertions(+)
> 
> As a SEGV fix, this really should go in for 1.4.  What needs to be
> done to make that happen.
> 
> diff --git a/hw/spapr_llan.c b/hw/spapr_llan.c
> index 6ef2936..0ace2eb 100644
> --- a/hw/spapr_llan.c
> +++ b/hw/spapr_llan.c
> @@ -175,11 +175,19 @@ static ssize_t spapr_vlan_receive(NetClientState *nc, 
> const uint8_t *buf,
>     return size;
> }
> 
> +static void spapr_vlan_cleanup(NetClientState *nc)
> +{
> +    VIOsPAPRVLANDevice *dev = qemu_get_nic_opaque(nc);
> +
> +    dev->nic = NULL;
> +}
> +
> static NetClientInfo net_spapr_vlan_info = {
>     .type = NET_CLIENT_OPTIONS_KIND_NIC,
>     .size = sizeof(NICState),
>     .can_receive = spapr_vlan_can_receive,
>     .receive = spapr_vlan_receive,
> +    .cleanup = spapr_vlan_cleanup,
> };
> 
> static void spapr_vlan_reset(VIOsPAPRDevice *sdev)
> -- 
> 1.7.10.4
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]