lkml.org 
[lkml]   [2018]   [Jun]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH 4.4 059/268] xen-netfront: Fix race between device setup and open
    From
    Date
    On Mon, 2018-05-28 at 12:00 +0200, Greg Kroah-Hartman wrote:
    > 4.4-stable review patch.  If anyone has any objections, please let me know.
    >
    > ------------------
    >
    > From: Ross Lagerwall <ross.lagerwall@citrix.com>
    >
    > [ Upstream commit f599c64fdf7d9c108e8717fb04bc41c680120da4 ]
    [...]
    > --- a/drivers/net/xen-netfront.c
    > +++ b/drivers/net/xen-netfront.c
    [...]
    > @@ -1839,6 +1824,7 @@ static int talk_to_netback(struct xenbus
    >   goto out;

    This "goto out" is outside the locked section...

    >   }
    >  
    > + rtnl_lock();
    >   if (info->queues)
    >   xennet_destroy_queues(info);
    >  
    > @@ -1849,6 +1835,7 @@ static int talk_to_netback(struct xenbus
    >   info->queues = NULL;
    >   goto out;
    >   }
    > + rtnl_unlock();
    >  
    >   /* Create shared ring, alloc event channel -- for each queue */
    >   for (i = 0; i < num_queues; ++i) {
    > @@ -1945,8 +1932,10 @@ abort_transaction_no_dev_fatal:
    >   xenbus_transaction_end(xbt, 1);
    >   destroy_ring:
    >   xennet_disconnect_backend(info);
    > + rtnl_lock();
    >   xennet_destroy_queues(info);
    >   out:
    > + rtnl_unlock();

    ...so this will be an unmatched unlock.

    You need to add another label below the rtnl_unlock().

    Ben.

    >   device_unregister(&dev->dev);
    >   return err;
    >  }
    [...]

    --
    Ben Hutchings, Software Developer   Codethink Ltd
    https://www.codethink.co.uk/ Dale House, 35 Dale Street
    Manchester, M1 2HF, United Kingdom

    \
     
     \ /
      Last update: 2018-06-11 16:30    [W:3.493 / U:0.204 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site