Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d59dd462 authored by akpm@osdl.org's avatar akpm@osdl.org Committed by Linus Torvalds
Browse files

[PATCH] use smp_mb/wmb/rmb where possible



Replace a number of memory barriers with smp_ variants.  This means we won't
take the unnecessary hit on UP machines.

Signed-off-by: default avatarAnton Blanchard <anton@samba.org>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 0d8d4d42
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -218,7 +218,7 @@ struct super_block *freeze_bdev(struct block_device *bdev)
	sb = get_super(bdev);
	if (sb && !(sb->s_flags & MS_RDONLY)) {
		sb->s_frozen = SB_FREEZE_WRITE;
		wmb();
		smp_wmb();

		sync_inodes_sb(sb, 0);
		DQUOT_SYNC(sb);
@@ -235,7 +235,7 @@ struct super_block *freeze_bdev(struct block_device *bdev)
		sync_inodes_sb(sb, 1);

		sb->s_frozen = SB_FREEZE_TRANS;
		wmb();
		smp_wmb();

		sync_blockdev(sb->s_bdev);

@@ -263,7 +263,7 @@ void thaw_bdev(struct block_device *bdev, struct super_block *sb)
		if (sb->s_op->unlockfs)
			sb->s_op->unlockfs(sb);
		sb->s_frozen = SB_UNFROZEN;
		wmb();
		smp_wmb();
		wake_up(&sb->s_wait_unfrozen);
		drop_super(sb);
	}
+2 −2
Original line number Diff line number Diff line
@@ -767,7 +767,7 @@ static inline void pipelined_send(struct mqueue_inode_info *info,
	list_del(&receiver->list);
	receiver->state = STATE_PENDING;
	wake_up_process(receiver->task);
	wmb();
	smp_wmb();
	receiver->state = STATE_READY;
}

@@ -786,7 +786,7 @@ static inline void pipelined_receive(struct mqueue_inode_info *info)
	list_del(&sender->list);
	sender->state = STATE_PENDING;
	wake_up_process(sender->task);
	wmb();
	smp_wmb();
	sender->state = STATE_READY;
}

+1 −1
Original line number Diff line number Diff line
@@ -174,7 +174,7 @@ int kthread_stop(struct task_struct *k)

	/* Must init completion *before* thread sees kthread_stop_info.k */
	init_completion(&kthread_stop_info.done);
	wmb();
	smp_wmb();

	/* Now set kthread_should_stop() to true, and wake it up. */
	kthread_stop_info.k = k;
+1 −1
Original line number Diff line number Diff line
@@ -522,7 +522,7 @@ static int __init create_hash_tables(void)
	return 0;
out_cleanup:
	prof_on = 0;
	mb();
	smp_mb();
	on_each_cpu(profile_nop, NULL, 0, 1);
	for_each_online_cpu(cpu) {
		struct page *page;
+1 −1
Original line number Diff line number Diff line
@@ -135,7 +135,7 @@ int ptrace_attach(struct task_struct *task)
 	    (current->gid != task->sgid) ||
 	    (current->gid != task->gid)) && !capable(CAP_SYS_PTRACE))
		goto bad;
	rmb();
	smp_rmb();
	if (!task->mm->dumpable && !capable(CAP_SYS_PTRACE))
		goto bad;
	/* the same process cannot be attached many times */
Loading