Skip to content

Commit

Permalink
9p: Make all client spin locks IRQ safe
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Tom Tucker authored and Eric Van Hensbergen committed Nov 5, 2008
1 parent 517ac45 commit cac23d6
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions net/9p/client.c
Original file line number Diff line number Diff line change
Expand Up @@ -613,6 +613,7 @@ static struct p9_fid *p9_fid_create(struct p9_client *clnt)
{
int err;
struct p9_fid *fid;
unsigned long flags;

P9_DPRINTK(P9_DEBUG_FID, "clnt %p\n", clnt);
fid = kmalloc(sizeof(struct p9_fid), GFP_KERNEL);
Expand All @@ -632,9 +633,9 @@ static struct p9_fid *p9_fid_create(struct p9_client *clnt)
fid->clnt = clnt;
fid->aux = NULL;

spin_lock(&clnt->lock);
spin_lock_irqsave(&clnt->lock, flags);
list_add(&fid->flist, &clnt->fidlist);
spin_unlock(&clnt->lock);
spin_unlock_irqrestore(&clnt->lock, flags);

return fid;

Expand All @@ -646,13 +647,14 @@ static struct p9_fid *p9_fid_create(struct p9_client *clnt)
static void p9_fid_destroy(struct p9_fid *fid)
{
struct p9_client *clnt;
unsigned long flags;

P9_DPRINTK(P9_DEBUG_FID, "fid %d\n", fid->fid);
clnt = fid->clnt;
p9_idpool_put(fid->fid, clnt->fidpool);
spin_lock(&clnt->lock);
spin_lock_irqsave(&clnt->lock, flags);
list_del(&fid->flist);
spin_unlock(&clnt->lock);
spin_unlock_irqrestore(&clnt->lock, flags);
kfree(fid);
}

Expand Down

0 comments on commit cac23d6

Please sign in to comment.