Message ID | 20090309163628.2570.8408.stgit@warthog.procyon.org.uk (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
On Mon, 2009-03-09 at 16:36 +0000, David Howells wrote: > In ehea_probe_adapter() the initial memory allocation and initialisation does > not need to be done with the ehea_fw_handles.lock semaphore held. Doing so > extends the amount of time the lock is held unnecessarily. Can you resend with netdev on CC ? Cheers, Ben. > Signed-off-by: David Howells <dhowells@redhat.com> > --- > > drivers/net/ehea/ehea_main.c | 13 ++++++------- > 1 files changed, 6 insertions(+), 7 deletions(-) > > > diff --git a/drivers/net/ehea/ehea_main.c b/drivers/net/ehea/ehea_main.c > index dfe9226..34480ae 100644 > --- a/drivers/net/ehea/ehea_main.c > +++ b/drivers/net/ehea/ehea_main.c > @@ -3370,18 +3370,19 @@ static int __devinit ehea_probe_adapter(struct of_device *dev, > ehea_error("Invalid ibmebus device probed"); > return -EINVAL; > } > - mutex_lock(&ehea_fw_handles.lock); > > adapter = kzalloc(sizeof(*adapter), GFP_KERNEL); > if (!adapter) { > - ret = -ENOMEM; > dev_err(&dev->dev, "no mem for ehea_adapter\n"); > - goto out; > + return -ENOMEM; > } > > - list_add(&adapter->list, &adapter_list); > - > adapter->ofdev = dev; > + adapter->pd = EHEA_PD_ID; > + > + mutex_lock(&ehea_fw_handles.lock); > + > + list_add(&adapter->list, &adapter_list); > > adapter_handle = of_get_property(dev->node, "ibm,hea-handle", > NULL); > @@ -3395,8 +3396,6 @@ static int __devinit ehea_probe_adapter(struct of_device *dev, > goto out_free_ad; > } > > - adapter->pd = EHEA_PD_ID; > - > dev->dev.driver_data = adapter; > > > > _______________________________________________ > Linuxppc-dev mailing list > Linuxppc-dev@ozlabs.org > https://ozlabs.org/mailman/listinfo/linuxppc-dev
diff --git a/drivers/net/ehea/ehea_main.c b/drivers/net/ehea/ehea_main.c index dfe9226..34480ae 100644 --- a/drivers/net/ehea/ehea_main.c +++ b/drivers/net/ehea/ehea_main.c @@ -3370,18 +3370,19 @@ static int __devinit ehea_probe_adapter(struct of_device *dev, ehea_error("Invalid ibmebus device probed"); return -EINVAL; } - mutex_lock(&ehea_fw_handles.lock); adapter = kzalloc(sizeof(*adapter), GFP_KERNEL); if (!adapter) { - ret = -ENOMEM; dev_err(&dev->dev, "no mem for ehea_adapter\n"); - goto out; + return -ENOMEM; } - list_add(&adapter->list, &adapter_list); - adapter->ofdev = dev; + adapter->pd = EHEA_PD_ID; + + mutex_lock(&ehea_fw_handles.lock); + + list_add(&adapter->list, &adapter_list); adapter_handle = of_get_property(dev->node, "ibm,hea-handle", NULL); @@ -3395,8 +3396,6 @@ static int __devinit ehea_probe_adapter(struct of_device *dev, goto out_free_ad; } - adapter->pd = EHEA_PD_ID; - dev->dev.driver_data = adapter;
In ehea_probe_adapter() the initial memory allocation and initialisation does not need to be done with the ehea_fw_handles.lock semaphore held. Doing so extends the amount of time the lock is held unnecessarily. Signed-off-by: David Howells <dhowells@redhat.com> --- drivers/net/ehea/ehea_main.c | 13 ++++++------- 1 files changed, 6 insertions(+), 7 deletions(-)