9p: Make all client spin locks IRQ safe
The client lock must be IRQ safe. Some of the lock acquisition paths took regular spin locks. Signed-off-by: Tom Tucker <tom@opengridcomputing.com> Signed-off-by: Eric Van Hensbergen <ericvh@gmail.com>
This commit is contained in:
parent
517ac45af4
commit
cac23d6505
@ -613,6 +613,7 @@ static struct p9_fid *p9_fid_create(struct p9_client *clnt)
|
|||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
struct p9_fid *fid;
|
struct p9_fid *fid;
|
||||||
|
unsigned long flags;
|
||||||
|
|
||||||
P9_DPRINTK(P9_DEBUG_FID, "clnt %p\n", clnt);
|
P9_DPRINTK(P9_DEBUG_FID, "clnt %p\n", clnt);
|
||||||
fid = kmalloc(sizeof(struct p9_fid), GFP_KERNEL);
|
fid = kmalloc(sizeof(struct p9_fid), GFP_KERNEL);
|
||||||
@ -632,9 +633,9 @@ static struct p9_fid *p9_fid_create(struct p9_client *clnt)
|
|||||||
fid->clnt = clnt;
|
fid->clnt = clnt;
|
||||||
fid->aux = NULL;
|
fid->aux = NULL;
|
||||||
|
|
||||||
spin_lock(&clnt->lock);
|
spin_lock_irqsave(&clnt->lock, flags);
|
||||||
list_add(&fid->flist, &clnt->fidlist);
|
list_add(&fid->flist, &clnt->fidlist);
|
||||||
spin_unlock(&clnt->lock);
|
spin_unlock_irqrestore(&clnt->lock, flags);
|
||||||
|
|
||||||
return fid;
|
return fid;
|
||||||
|
|
||||||
@ -646,13 +647,14 @@ error:
|
|||||||
static void p9_fid_destroy(struct p9_fid *fid)
|
static void p9_fid_destroy(struct p9_fid *fid)
|
||||||
{
|
{
|
||||||
struct p9_client *clnt;
|
struct p9_client *clnt;
|
||||||
|
unsigned long flags;
|
||||||
|
|
||||||
P9_DPRINTK(P9_DEBUG_FID, "fid %d\n", fid->fid);
|
P9_DPRINTK(P9_DEBUG_FID, "fid %d\n", fid->fid);
|
||||||
clnt = fid->clnt;
|
clnt = fid->clnt;
|
||||||
p9_idpool_put(fid->fid, clnt->fidpool);
|
p9_idpool_put(fid->fid, clnt->fidpool);
|
||||||
spin_lock(&clnt->lock);
|
spin_lock_irqsave(&clnt->lock, flags);
|
||||||
list_del(&fid->flist);
|
list_del(&fid->flist);
|
||||||
spin_unlock(&clnt->lock);
|
spin_unlock_irqrestore(&clnt->lock, flags);
|
||||||
kfree(fid);
|
kfree(fid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user