login
Login
/
Register
Search
Search this site:
Forums
News
Blogs
Features
Site
Home
»
Mailing list archives
»
linux-kernel
»
2008
»
August
»
13
Re: [PATCH] kexec jump: fix compiling warning on xchg(&kexec_lock, 0) in kernel_kexec()
view
thread
Previous message: [
thread
] [
date
] [
author
]
Next message: [
thread
] [
date
] [
author
]
[view in full thread]
From: Vivek Goyal
Subject:
Re: [PATCH] kexec jump: fix compiling warning on xchg(&kexec_lock, 0) in kernel_kexec()
Date: Wednesday, August 13, 2008 - 2:21 pm
On Wed, Aug 13, 2008 at 01:41:18PM -0700, Andrew Morton wrote:
quoted text
> On Wed, 13 Aug 2008 13:31:24 -0700 (PDT) > Linus Torvalds <torvalds@linux-foundation.org> wrote: > > > On Wed, 13 Aug 2008, Andrew Morton wrote: > > > > > > #2: > > > > I thought you said there were things that want to sleep in the region? > > be reasonable - that was over five minutes ago. > > --- a/kernel/kexec.c~kexec-use-a-bitop-for-locking-rather-than-xchg > +++ a/kernel/kexec.c > @@ -12,7 +12,7 @@ > #include <linux/slab.h> > #include <linux/fs.h> > #include <linux/kexec.h> > -#include <linux/spinlock.h> > +#include <linux/mutex.h> > #include <linux/list.h> > #include <linux/highmem.h> > #include <linux/syscalls.h> > @@ -924,19 +924,14 @@ static int kimage_load_segment(struct ki > */ > struct kimage *kexec_image; > struct kimage *kexec_crash_image; > -/* > - * A home grown binary mutex. > - * Nothing can wait so this mutex is safe to use > - * in interrupt context :) > - */ > -static int kexec_lock; > + > +static DEFINE_MUTEX(kexec_mutex); > > asmlinkage long sys_kexec_load(unsigned long entry, unsigned long nr_segments, > struct kexec_segment __user *segments, > unsigned long flags) > { > struct kimage **dest_image, *image; > - int locked; > int result; > > /* We only trust the superuser with rebooting the system. */ > @@ -972,8 +967,7 @@ asmlinkage long sys_kexec_load(unsigned > * > * KISS: always take the mutex. > */ > - locked = xchg(&kexec_lock, 1); > - if (locked) > + if (!mutex_trylock(&kexec_mutex)) > return -EBUSY; > > dest_image = &kexec_image; > @@ -1015,8 +1009,7 @@ asmlinkage long sys_kexec_load(unsigned > image = xchg(dest_image, image); > > out: > - locked = xchg(&kexec_lock, 0); /* Release the mutex */ > - BUG_ON(!locked); > + mutex_unlock(&kexec_mutex); > kimage_free(image); > > return result; > @@ -1063,10 +1056,7 @@ asmlinkage long compat_sys_kexec_load(un > > void crash_kexec(struct pt_regs *regs) > { > - int locked; > - > - > - /* Take the kexec_lock here to prevent sys_kexec_load > + /* Take the kexec_mutex here to prevent sys_kexec_load > * running on one cpu from replacing the crash kernel > * we are using after a panic on a different cpu. > * > @@ -1074,8 +1064,7 @@ void crash_kexec(struct pt_regs *regs) > * of memory the xchg(&kexec_crash_image) would be > * sufficient. But since I reuse the memory... > */ > - locked = xchg(&kexec_lock, 1); > - if (!locked) { > + if (mutex_trylock(&kexec_mutex)) { > if (kexec_crash_image) { > struct pt_regs fixed_regs; > crash_setup_regs(&fixed_regs, regs); > @@ -1083,8 +1072,7 @@ void crash_kexec(struct pt_regs *regs) > machine_crash_shutdown(&fixed_regs); > machine_kexec(kexec_crash_image); > } > - locked = xchg(&kexec_lock, 0); > - BUG_ON(!locked); > + mutex_unlock(&kexec_mutex); > } > } > > @@ -1434,7 +1422,7 @@ int kernel_kexec(void) > { > int error = 0; > > - if (xchg(&kexec_lock, 1)) > + if (!mutex_trylock(&kexec_mutex)) > return -EBUSY; > if (!kexec_image) { > error = -EINVAL; > @@ -1498,8 +1486,6 @@ int kernel_kexec(void) > #endif > > Unlock: > - if (!xchg(&kexec_lock, 0)) > - BUG(); > - > + mutex_unlock(&kexec_mutex); > return error; > }
I tested kexec and kudmp on 2.6.27-rc3 with this patch. Works for me on a 32 bit machine. Thanks Vivek --
unsubscribe notice
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to
majordomo@vger.kernel.org
More majordomo info at
http://vger.kernel.org/majordomo-info.html
Please read the FAQ at
http://www.tux.org/lkml/
Previous message: [
thread
] [
date
] [
author
]
Next message: [
thread
] [
date
] [
author
]
Messages in current thread:
[PATCH] kexec jump: fix compiling warning on xchg(&kexec_l ...
, Huang Ying
, (Wed Aug 13, 2:12 am)
Re: [PATCH] kexec jump: fix compiling warning on xchg(&kex ...
, Andrew Morton
, (Wed Aug 13, 2:27 am)
Re: [PATCH] kexec jump: fix compiling warning on xchg(&kex ...
, Linus Torvalds
, (Wed Aug 13, 9:57 am)
Re: [PATCH] kexec jump: fix compiling warning on xchg(&kex ...
, Linus Torvalds
, (Wed Aug 13, 10:01 am)
Re: [PATCH] kexec jump: fix compiling warning on xchg(&kex ...
, Andrew Morton
, (Wed Aug 13, 10:25 am)
Re: [PATCH] kexec jump: fix compiling warning on xchg(&kex ...
, Ingo Molnar
, (Wed Aug 13, 10:59 am)
Re: [PATCH] kexec jump: fix compiling warning on xchg(&kex ...
, Eric W. Biederman
, (Wed Aug 13, 11:12 am)
Re: [PATCH] kexec jump: fix compiling warning on xchg(&kex ...
, Vivek Goyal
, (Wed Aug 13, 11:31 am)
Re: [PATCH] kexec jump: fix compiling warning on xchg(&kex ...
, Andrew Morton
, (Wed Aug 13, 12:44 pm)
Re: [PATCH] kexec jump: fix compiling warning on xchg(&kex ...
, Linus Torvalds
, (Wed Aug 13, 12:50 pm)
Re: [PATCH] kexec jump: fix compiling warning on xchg(&kex ...
, Andrew Morton
, (Wed Aug 13, 1:07 pm)
Re: [PATCH] kexec jump: fix compiling warning on xchg(&kex ...
, Linus Torvalds
, (Wed Aug 13, 1:13 pm)
Re: [PATCH] kexec jump: fix compiling warning on xchg(&kex ...
, Trond Myklebust
, (Wed Aug 13, 1:15 pm)
Re: [PATCH] kexec jump: fix compiling warning on xchg(&kex ...
, Andrew Morton
, (Wed Aug 13, 1:25 pm)
Re: [PATCH] kexec jump: fix compiling warning on xchg(&kex ...
, Linus Torvalds
, (Wed Aug 13, 1:31 pm)
Re: [PATCH] kexec jump: fix compiling warning on xchg(&kex ...
, Andrew Morton
, (Wed Aug 13, 1:41 pm)
Re: [PATCH] kexec jump: fix compiling warning on xchg(&kex ...
, Vivek Goyal
, (Wed Aug 13, 2:21 pm)
Re: [PATCH] kexec jump: fix compiling warning on xchg(&kex ...
, Linus Torvalds
, (Wed Aug 13, 3:17 pm)
Navigation
Create content
Mailing list archives
Recent posts
Popular discussions
linux-kernel
:
Brandeburg, Jesse
RE: [regression] e1000e broke e1000 (was: Re: [ANNOUNCE] e1000 toe1000e migration ...
Robin Lee Powell
NFS hang + umount -f: better behaviour requested.
Linus Torvalds
Linux 2.6.34-rc4
Nick Piggin
Re: dealing with barriers (was Re: [PATCH] firewire: fw-core: enforce write order ...
Joe Perches
Re: [patch] checkpatch: putting the && or || on the wrong line
git
:
Fredrik Kuivinen
Re: fatal: unable to create '.git/index': File exists
Johannes Sixt
Re: How to pull remote branch with specified commit id?
Henrik Vendelbo
only accessing some git repos: Am I configuring daemon wrong?
Martin Langhoff
Re: CVS -> SVN -> Git
Rene Herman
"git pull . <branch>" versus "git merge <branch>"
linux-netdev
:
Jamie Lokier
Re: POHMELFS high performance network filesystem. Transactions, failover, performa...
Paulius Zaleckas
Re: [RFC] Patch to option HSO driver to the kernel
Timo Teräs
ip xfrm policy semantics
Ron Mercer
[net-next PATCH 2/2] qlge: Version change to v1.00.00.27
Maciej W. Rozycki
Re: [PATCH] flush_work_sync vs. flush_scheduled_work Re: [PATCH] PHYLIB: IRQ event...
openbsd-misc
:
Sevan / Venture37
Re: This is what Linus Torvalds calls openBSD crowd
Siju George
This is what Linus Torvalds calls openBSD crowd
new_guy
Longest Uptime?
Bryan
Re: What does your environment look like?
Bob Beck
Re: observed spamd behavior
git-commits-head
:
Linux Kernel Mailing List
powerpc/fsl_msi: enable msi allocation in all banks
Linux Kernel Mailing List
[ARM] mmp: avengers lite (pxa168) board bring up
Linux Kernel Mailing List
swiotlb: replace architecture-specific swiotlb.h with linux/swiotlb.h
Linux Kernel Mailing List
ASoC: fix registration of the SoC card in the Freescale MPC8610 drivers
Linux Kernel Mailing List
drivers/acpi: use kasprintf
Colocation donated by:
Syndicate