diff options
author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2006-12-07 15:48:15 -0500 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2006-12-07 15:48:15 -0500 |
commit | 34161db6b14d984fb9b06c735b7b42f8803f6851 (patch) | |
tree | 99656278b6697f1cde5b05894b7c0ee22c63a00e /ipc/util.c | |
parent | 5847e1f4d058677c5e46dc6c3e3c70e8855ea3ba (diff) | |
parent | 620034c84d1d939717bdfbe02c51a3fee43541c3 (diff) |
Merge branch 'master' of /home/trondmy/kernel/linux-2.6/ into merge_linus
Conflicts:
include/linux/sunrpc/xprt.h
net/sunrpc/xprtsock.c
Fix up conflicts with the workqueue changes.
Diffstat (limited to 'ipc/util.c')
-rw-r--r-- | ipc/util.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/ipc/util.c b/ipc/util.c index cd8bb14a431f..a9b7a227b8d4 100644 --- a/ipc/util.c +++ b/ipc/util.c | |||
@@ -514,6 +514,11 @@ void ipc_rcu_getref(void *ptr) | |||
514 | container_of(ptr, struct ipc_rcu_hdr, data)->refcount++; | 514 | container_of(ptr, struct ipc_rcu_hdr, data)->refcount++; |
515 | } | 515 | } |
516 | 516 | ||
517 | static void ipc_do_vfree(struct work_struct *work) | ||
518 | { | ||
519 | vfree(container_of(work, struct ipc_rcu_sched, work)); | ||
520 | } | ||
521 | |||
517 | /** | 522 | /** |
518 | * ipc_schedule_free - free ipc + rcu space | 523 | * ipc_schedule_free - free ipc + rcu space |
519 | * @head: RCU callback structure for queued work | 524 | * @head: RCU callback structure for queued work |
@@ -528,7 +533,7 @@ static void ipc_schedule_free(struct rcu_head *head) | |||
528 | struct ipc_rcu_sched *sched = | 533 | struct ipc_rcu_sched *sched = |
529 | container_of(&(grace->data[0]), struct ipc_rcu_sched, data[0]); | 534 | container_of(&(grace->data[0]), struct ipc_rcu_sched, data[0]); |
530 | 535 | ||
531 | INIT_WORK(&sched->work, vfree, sched); | 536 | INIT_WORK(&sched->work, ipc_do_vfree); |
532 | schedule_work(&sched->work); | 537 | schedule_work(&sched->work); |
533 | } | 538 | } |
534 | 539 | ||