Hi,

  mm/highmem.c/copy_from_high_bh() blocks interrupts while copying "down"
to a bounce buffer, for writing.
  This function is only ever called from create_bounce() (which cannot
be called from an interrupt context - it may block), and the kmap
'KM_BOUNCE_WRITE' is only used in copy_from_high_bh().

  Therefore, the comment in copy_from_high_bh() is wrong, and the
__cli()/__sti() unnecessary.

  Patch against 2.4.6 below.

Mark

-------------------------------------------------------------------

diff -urN -X dontdiff linux-2.4.6/mm/highmem.c cli-2.4.6/mm/highmem.c
--- linux-2.4.6/mm/highmem.c    Fri Jun 29 23:17:34 2001
+++ cli-2.4.6/mm/highmem.c      Sun Jul  8 15:50:04 2001
@@ -182,20 +182,12 @@
 {
        struct page *p_from;
        char *vfrom;
-       unsigned long flags;

        p_from = from->b_page;

-       /*
-        * Since this can be executed from IRQ context, reentrance
-        * on the same CPU must be avoided:
-        */
-       __save_flags(flags);
-       __cli();
        vfrom = kmap_atomic(p_from, KM_BOUNCE_WRITE);
        memcpy(to->b_data, vfrom + bh_offset(from), to->b_size);
        kunmap_atomic(vfrom, KM_BOUNCE_WRITE);
-       __restore_flags(flags);
 }

 static inline void copy_to_high_bh_irq (struct buffer_head *to,


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to