On Mon, 9 Jun 2003 15:58:04 -0400 , 
"Sanders, Richard" <[EMAIL PROTECTED]> wrote:
>Here is a patch for  kdb/kdb_io.c which fixes a SMP race on the printf lock.
>Patch is against 4.2.
>--- linux/kdb/kdb_io.c.orig    Mon Jun  9 15:45:54 2003
>+++ linux/kdb/kdb_io.c Mon Jun  9 15:47:08 2003
>@@ -493,10 +493,11 @@
>        * But if any cpu goes recursive in kdb, just print the output,
>        * even if it is interleaved with any other text.
>        */
>-      if (!KDB_STATE(PRINTF_LOCK)) {
>+      spin_lock(&kdb_printf_lock);
>+      if (!KDB_STATE(PRINTF_LOCK)) 
>               KDB_STATE_SET(PRINTF_LOCK);
>-              spin_lock(&kdb_printf_lock);
>-      }
>+      else
>+              spin_unlock(&kdb_printf_lock);
> 
>       diag = kdbgetintenv("LINES", &linecount);
>       if (diag || linecount <= 1)
>@@ -592,8 +593,8 @@
>               console_loglevel = saved_loglevel;
>       }
>       if (KDB_STATE(PRINTF_LOCK)) {
>-              spin_unlock(&kdb_printf_lock);
>               KDB_STATE_CLEAR(PRINTF_LOCK);
>+              spin_unlock(&kdb_printf_lock);
>       }
>       if (do_longjmp)
> #ifdef KDB_HAVE_LONGJMP

Rejected.  Read the comments at the start of your patch, you just
introduced a recursion deadlock.

BTW, your patch was in quoted printable.  Like Linus, I tend to ignore
encoded patches unless they are so large that they have to be zipped.
Please send small patchs in plain text, not as encoded attachments.


Reply via email to