jmerkey@wolfmountaingroup.com wrote:I'm having a quick look at mdb-2.6.27-rc4-ia32-08-20-08.patch at the moment. Speaking of debug_lock()...: You use spin_trylock_irqsave((spinlock_t *)&rlock->lock, rlock->flags) in there. Minor nit: The pointer type cast is unnecessary. Major problem: rlock->flags is wrong in this call. Use an on-stack flags variable for the initial spin_trylock_irqsave. Ditto in the following call of spin_trylock_irqsave. Next major problem with debug_lock() and debug_unlock(): The reference counting doesn't work. You need an atomic_t counter. Have a look at the struct kref accessors for example, or even make use of the kref API. Or if it isn't feasible to fix with atomic_t, add a second spinlock to rlock_t to ensure integrity of .count (and of the .processor if necessary). Furthermore, I have doubts about the loop which is entered by CPU B while CPU A holds the rlock. You are fully aware that atomic_read(a) && !atomic_read(b) in its entirety is not atomic, I hope. All this aside, I don't see *anything* in debug_lock and _unlock which would necessitate volatile. Well, volatile might have papered over some of these bugs. PS: Try to cut down on #if/#endif clutter. It should be possible to reduce them at least in .c files; .h are a different matter. For example, #if MDB_DEBUG_DEBUGGER DBGPrint("something"); #endif can be trivially reduced to dbg_mdb_printk("something"); where dbg_mdb_printk() is defined as an inline function which does nothing when MDB_DEBUG_DEBUGGER is false. PS2: Why are there this many debug printks anyway? -- Stefan Richter -=====-==--- =--- =-=-= http://arcgraph.de/sr/ --
| Tarkan Erimer | Re: Dual-Licensing Linux Kernel with GPL V2 and GPL V3 |
| WANG Cong | Re: WANTED: kernel projects for CS students |
| Hiten Pandya | Re: up? (emacs docbook xml ide) |
| Rafael J. Wysocki | [Bug #10606] 2.6.26-rc1 regression: ACPI fails to load SDT. - Dell M1530 |
| David Fenyes | sigsetmask()? (LINUX) |
| X X | X11 GIf viewer somewhere? |
| root | Broken pipe when using reboot/halt, etc. |
| Stephen Tweedie | Unmounting root (no kidding!) [was: Some Linux problems---solved] |
git: | |
| Gerrit Renker | [PATCH 27/37] dccp: Integration of dynamic feature activation - part 2 (server side) |
| David Miller | Re: iptables very slow after commit784544739a25c30637397ace5489eeb6e15d7d49 |
| David Miller | [GIT]: Networking |
| Jarek Poplawski | [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
