lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Sun, 13 Jul 2008 20:53:29 +0200
From:	"Jakub W. Jozwicki" <jozwicki@...er.pl>
To:	Jeremy Fitzhardinge <jeremy@...p.org>
Cc:	Andrew Morton <akpm@...ux-foundation.org>,
	linux-kernel@...r.kernel.org, mingo@...e.hu, tglx@...esys.com
Subject: Re: [PATCH 2.6.25.10 1/2] libata: fix locking for kmap_atomic

Sunday, 13 of July 2008 19:46:29 Jeremy Fitzhardinge napisaƂ(a):
> Jakub W. Jozwicki wrote:
> > Sorry, this was for -rt only.
> >
> > [   17.012011] BUG: sleeping function called from invalid context
> > IRQ-14(5732) at arch/x86/mm/highmem_32.c:8
> > [   17.012011] in_atomic():0 [00000000], irqs_disabled():1
> > [   17.012011] Pid: 5732, comm: IRQ-14 Not tainted 2.6.25.10-rtXXX #11
> > [   17.012011]  [<c0120fc4>] __might_sleep+0xf1/0xf8
> > [   17.012011]  [<c011c035>] kmap+0x47/0x5a
>
> The subject says kmap_atomic, but this is kmap.  It definitely makes no
> sense to call kmap in an IRQ, regardless of the locking.  There seems to
> be a larger structural problem here.
>

--- linux-2.6.25.8-rt7.orig/include/asm-x86/highmem.h   2008-06-23 
19:12:47.000000000 -0400
+++ linux-2.6.25.8-rt7/include/asm-x86/highmem.h        2008-06-23 
19:13:58.000000000 -0400


+/*
+ * on PREEMPT_RT kmap_atomic() is a wrapper that uses kmap():
+ */
+#ifdef CONFIG_PREEMPT_RT
+# define kmap_atomic_prot(page, type, prot)    ({ pagefault_disable(); 
kmap(page); })
+# define kmap_atomic(page, type)       ({ pagefault_disable(); kmap(page); })
+# define kmap_atomic_pfn(pfn, type)    kmap(pfn_to_page(pfn))
+# define kunmap_atomic(kvaddr, type)   do { pagefault_enable(); 
kunmap_virt(kvaddr); } while(0)
+# define kmap_atomic_to_page(kvaddr)   kmap_to_page(kvaddr)
+#else
+# define kmap_atomic_prot(page, type, prot)    __kmap_atomic_prot(page, type, 
prot)
+# define kmap_atomic(page, type)       __kmap_atomic(page, type)
+# define kmap_atomic_pfn(pfn, type)    __kmap_atomic_pfn(pfn, type)
+# define kunmap_atomic(kvaddr, type)   __kunmap_atomic(kvaddr, type)
+# define kmap_atomic_to_page(kvaddr)   __kmap_atomic_to_page(kvaddr)
+#endif
+
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ