* [PATCH] kill DECLARE_MUTEX_LOCKED
@ 2007-07-19 21:11 Christoph Hellwig
2007-07-20 5:28 ` Satyam Sharma
0 siblings, 1 reply; 5+ messages in thread
From: Christoph Hellwig @ 2007-07-19 21:11 UTC (permalink / raw)
To: akpm; +Cc: linux-kernel
DECLARE_MUTEX_LOCKED was used for semaphores used as completions and
we've got rid of them. Well, except for one in libusual that the
maintainer explicitly wants to keep as semaphore. So convert that
useage to an explicit sema_init and kill of DECLARE_MUTEX_LOCKED so that
new code is reminded to use a completion.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Index: linux-2.6/include/asm-alpha/semaphore.h
===================================================================
--- linux-2.6.orig/include/asm-alpha/semaphore.h 2007-07-19 22:06:28.000000000 +0200
+++ linux-2.6/include/asm-alpha/semaphore.h 2007-07-19 22:08:44.000000000 +0200
@@ -30,7 +30,6 @@ struct semaphore {
struct semaphore name = __SEMAPHORE_INITIALIZER(name,count)
#define DECLARE_MUTEX(name) __DECLARE_SEMAPHORE_GENERIC(name,1)
-#define DECLARE_MUTEX_LOCKED(name) __DECLARE_SEMAPHORE_GENERIC(name,0)
static inline void sema_init(struct semaphore *sem, int val)
{
Index: linux-2.6/include/asm-arm/semaphore.h
===================================================================
--- linux-2.6.orig/include/asm-arm/semaphore.h 2007-07-19 22:06:28.000000000 +0200
+++ linux-2.6/include/asm-arm/semaphore.h 2007-07-19 22:08:44.000000000 +0200
@@ -28,7 +28,6 @@ struct semaphore {
struct semaphore name = __SEMAPHORE_INIT(name,count)
#define DECLARE_MUTEX(name) __DECLARE_SEMAPHORE_GENERIC(name,1)
-#define DECLARE_MUTEX_LOCKED(name) __DECLARE_SEMAPHORE_GENERIC(name,0)
static inline void sema_init(struct semaphore *sem, int val)
{
Index: linux-2.6/include/asm-arm26/semaphore.h
===================================================================
--- linux-2.6.orig/include/asm-arm26/semaphore.h 2007-07-19 22:06:28.000000000 +0200
+++ linux-2.6/include/asm-arm26/semaphore.h 2007-07-19 22:08:44.000000000 +0200
@@ -29,7 +29,6 @@ struct semaphore {
struct semaphore name = __SEMAPHORE_INIT(name,count)
#define DECLARE_MUTEX(name) __DECLARE_SEMAPHORE_GENERIC(name,1)
-#define DECLARE_MUTEX_LOCKED(name) __DECLARE_SEMAPHORE_GENERIC(name,0)
static inline void sema_init(struct semaphore *sem, int val)
{
Index: linux-2.6/include/asm-avr32/semaphore.h
===================================================================
--- linux-2.6.orig/include/asm-avr32/semaphore.h 2007-07-19 22:06:28.000000000 +0200
+++ linux-2.6/include/asm-avr32/semaphore.h 2007-07-19 22:08:44.000000000 +0200
@@ -36,7 +36,6 @@ struct semaphore {
struct semaphore name = __SEMAPHORE_INITIALIZER(name,count)
#define DECLARE_MUTEX(name) __DECLARE_SEMAPHORE_GENERIC(name,1)
-#define DECLARE_MUTEX_LOCKED(name) __DECLARE_SEMAPHORE_GENERIC(name,0)
static inline void sema_init (struct semaphore *sem, int val)
{
Index: linux-2.6/include/asm-blackfin/semaphore.h
===================================================================
--- linux-2.6.orig/include/asm-blackfin/semaphore.h 2007-07-19 22:06:28.000000000 +0200
+++ linux-2.6/include/asm-blackfin/semaphore.h 2007-07-19 22:08:44.000000000 +0200
@@ -35,7 +35,6 @@ struct semaphore {
struct semaphore name = __SEMAPHORE_INITIALIZER(name,count)
#define DECLARE_MUTEX(name) __DECLARE_SEMAPHORE_GENERIC(name,1)
-#define DECLARE_MUTEX_LOCKED(name) __DECLARE_SEMAPHORE_GENERIC(name,0)
static inline void sema_init(struct semaphore *sem, int val)
{
Index: linux-2.6/include/asm-cris/semaphore.h
===================================================================
--- linux-2.6.orig/include/asm-cris/semaphore.h 2007-07-19 22:06:28.000000000 +0200
+++ linux-2.6/include/asm-cris/semaphore.h 2007-07-19 22:08:44.000000000 +0200
@@ -35,7 +35,6 @@ struct semaphore {
struct semaphore name = __SEMAPHORE_INITIALIZER(name,count)
#define DECLARE_MUTEX(name) __DECLARE_SEMAPHORE_GENERIC(name,1)
-#define DECLARE_MUTEX_LOCKED(name) __DECLARE_SEMAPHORE_GENERIC(name,0)
static inline void sema_init(struct semaphore *sem, int val)
{
Index: linux-2.6/include/asm-frv/semaphore.h
===================================================================
--- linux-2.6.orig/include/asm-frv/semaphore.h 2007-07-19 22:06:28.000000000 +0200
+++ linux-2.6/include/asm-frv/semaphore.h 2007-07-19 22:08:44.000000000 +0200
@@ -49,7 +49,6 @@ struct semaphore {
struct semaphore name = __SEMAPHORE_INITIALIZER(name,count)
#define DECLARE_MUTEX(name) __DECLARE_SEMAPHORE_GENERIC(name,1)
-#define DECLARE_MUTEX_LOCKED(name) __DECLARE_SEMAPHORE_GENERIC(name,0)
static inline void sema_init (struct semaphore *sem, int val)
{
Index: linux-2.6/include/asm-h8300/semaphore.h
===================================================================
--- linux-2.6.orig/include/asm-h8300/semaphore.h 2007-07-19 22:06:28.000000000 +0200
+++ linux-2.6/include/asm-h8300/semaphore.h 2007-07-19 22:08:44.000000000 +0200
@@ -39,7 +39,6 @@ struct semaphore {
struct semaphore name = __SEMAPHORE_INITIALIZER(name,count)
#define DECLARE_MUTEX(name) __DECLARE_SEMAPHORE_GENERIC(name,1)
-#define DECLARE_MUTEX_LOCKED(name) __DECLARE_SEMAPHORE_GENERIC(name,0)
static inline void sema_init (struct semaphore *sem, int val)
{
Index: linux-2.6/include/asm-i386/semaphore.h
===================================================================
--- linux-2.6.orig/include/asm-i386/semaphore.h 2007-07-19 22:06:28.000000000 +0200
+++ linux-2.6/include/asm-i386/semaphore.h 2007-07-19 22:08:44.000000000 +0200
@@ -59,7 +59,6 @@ struct semaphore {
struct semaphore name = __SEMAPHORE_INITIALIZER(name,count)
#define DECLARE_MUTEX(name) __DECLARE_SEMAPHORE_GENERIC(name,1)
-#define DECLARE_MUTEX_LOCKED(name) __DECLARE_SEMAPHORE_GENERIC(name,0)
static inline void sema_init (struct semaphore *sem, int val)
{
Index: linux-2.6/include/asm-ia64/semaphore.h
===================================================================
--- linux-2.6.orig/include/asm-ia64/semaphore.h 2007-07-19 22:06:28.000000000 +0200
+++ linux-2.6/include/asm-ia64/semaphore.h 2007-07-19 22:08:44.000000000 +0200
@@ -28,7 +28,6 @@ struct semaphore {
struct semaphore name = __SEMAPHORE_INITIALIZER(name, count)
#define DECLARE_MUTEX(name) __DECLARE_SEMAPHORE_GENERIC(name, 1)
-#define DECLARE_MUTEX_LOCKED(name) __DECLARE_SEMAPHORE_GENERIC(name, 0)
static inline void
sema_init (struct semaphore *sem, int val)
Index: linux-2.6/include/asm-m32r/semaphore.h
===================================================================
--- linux-2.6.orig/include/asm-m32r/semaphore.h 2007-07-19 22:06:28.000000000 +0200
+++ linux-2.6/include/asm-m32r/semaphore.h 2007-07-19 22:08:44.000000000 +0200
@@ -35,7 +35,6 @@ struct semaphore {
struct semaphore name = __SEMAPHORE_INITIALIZER(name,count)
#define DECLARE_MUTEX(name) __DECLARE_SEMAPHORE_GENERIC(name,1)
-#define DECLARE_MUTEX_LOCKED(name) __DECLARE_SEMAPHORE_GENERIC(name,0)
static inline void sema_init (struct semaphore *sem, int val)
{
Index: linux-2.6/include/asm-m68k/semaphore.h
===================================================================
--- linux-2.6.orig/include/asm-m68k/semaphore.h 2007-07-19 22:06:28.000000000 +0200
+++ linux-2.6/include/asm-m68k/semaphore.h 2007-07-19 22:08:44.000000000 +0200
@@ -40,7 +40,6 @@ struct semaphore {
struct semaphore name = __SEMAPHORE_INITIALIZER(name,count)
#define DECLARE_MUTEX(name) __DECLARE_SEMAPHORE_GENERIC(name,1)
-#define DECLARE_MUTEX_LOCKED(name) __DECLARE_SEMAPHORE_GENERIC(name,0)
static inline void sema_init(struct semaphore *sem, int val)
{
Index: linux-2.6/include/asm-m68knommu/semaphore.h
===================================================================
--- linux-2.6.orig/include/asm-m68knommu/semaphore.h 2007-07-19 22:06:28.000000000 +0200
+++ linux-2.6/include/asm-m68knommu/semaphore.h 2007-07-19 22:08:44.000000000 +0200
@@ -39,7 +39,6 @@ struct semaphore {
struct semaphore name = __SEMAPHORE_INITIALIZER(name,count)
#define DECLARE_MUTEX(name) __DECLARE_SEMAPHORE_GENERIC(name,1)
-#define DECLARE_MUTEX_LOCKED(name) __DECLARE_SEMAPHORE_GENERIC(name,0)
static inline void sema_init (struct semaphore *sem, int val)
{
Index: linux-2.6/include/asm-mips/semaphore.h
===================================================================
--- linux-2.6.orig/include/asm-mips/semaphore.h 2007-07-19 22:06:28.000000000 +0200
+++ linux-2.6/include/asm-mips/semaphore.h 2007-07-19 22:08:44.000000000 +0200
@@ -49,7 +49,6 @@ struct semaphore {
struct semaphore name = __SEMAPHORE_INITIALIZER(name,count)
#define DECLARE_MUTEX(name) __DECLARE_SEMAPHORE_GENERIC(name, 1)
-#define DECLARE_MUTEX_LOCKED(name) __DECLARE_SEMAPHORE_GENERIC(name, 0)
static inline void sema_init (struct semaphore *sem, int val)
{
Index: linux-2.6/include/asm-parisc/semaphore.h
===================================================================
--- linux-2.6.orig/include/asm-parisc/semaphore.h 2007-07-19 22:06:28.000000000 +0200
+++ linux-2.6/include/asm-parisc/semaphore.h 2007-07-19 22:08:44.000000000 +0200
@@ -53,7 +53,6 @@ struct semaphore {
struct semaphore name = __SEMAPHORE_INITIALIZER(name,count)
#define DECLARE_MUTEX(name) __DECLARE_SEMAPHORE_GENERIC(name,1)
-#define DECLARE_MUTEX_LOCKED(name) __DECLARE_SEMAPHORE_GENERIC(name,0)
extern inline void sema_init (struct semaphore *sem, int val)
{
Index: linux-2.6/include/asm-powerpc/semaphore.h
===================================================================
--- linux-2.6.orig/include/asm-powerpc/semaphore.h 2007-07-19 22:06:28.000000000 +0200
+++ linux-2.6/include/asm-powerpc/semaphore.h 2007-07-19 22:08:44.000000000 +0200
@@ -35,7 +35,6 @@ struct semaphore {
struct semaphore name = __SEMAPHORE_INITIALIZER(name,count)
#define DECLARE_MUTEX(name) __DECLARE_SEMAPHORE_GENERIC(name, 1)
-#define DECLARE_MUTEX_LOCKED(name) __DECLARE_SEMAPHORE_GENERIC(name, 0)
static inline void sema_init (struct semaphore *sem, int val)
{
Index: linux-2.6/include/asm-s390/semaphore.h
===================================================================
--- linux-2.6.orig/include/asm-s390/semaphore.h 2007-07-19 22:06:28.000000000 +0200
+++ linux-2.6/include/asm-s390/semaphore.h 2007-07-19 22:08:44.000000000 +0200
@@ -33,7 +33,6 @@ struct semaphore {
struct semaphore name = __SEMAPHORE_INITIALIZER(name,count)
#define DECLARE_MUTEX(name) __DECLARE_SEMAPHORE_GENERIC(name,1)
-#define DECLARE_MUTEX_LOCKED(name) __DECLARE_SEMAPHORE_GENERIC(name,0)
static inline void sema_init (struct semaphore *sem, int val)
{
Index: linux-2.6/include/asm-sh/semaphore.h
===================================================================
--- linux-2.6.orig/include/asm-sh/semaphore.h 2007-07-19 22:06:28.000000000 +0200
+++ linux-2.6/include/asm-sh/semaphore.h 2007-07-19 22:08:44.000000000 +0200
@@ -37,7 +37,6 @@ struct semaphore {
struct semaphore name = __SEMAPHORE_INITIALIZER(name,count)
#define DECLARE_MUTEX(name) __DECLARE_SEMAPHORE_GENERIC(name,1)
-#define DECLARE_MUTEX_LOCKED(name) __DECLARE_SEMAPHORE_GENERIC(name,0)
static inline void sema_init (struct semaphore *sem, int val)
{
Index: linux-2.6/include/asm-sh64/semaphore.h
===================================================================
--- linux-2.6.orig/include/asm-sh64/semaphore.h 2007-07-19 22:06:28.000000000 +0200
+++ linux-2.6/include/asm-sh64/semaphore.h 2007-07-19 22:08:44.000000000 +0200
@@ -44,7 +44,6 @@ struct semaphore {
struct semaphore name = __SEMAPHORE_INITIALIZER(name,count)
#define DECLARE_MUTEX(name) __DECLARE_SEMAPHORE_GENERIC(name,1)
-#define DECLARE_MUTEX_LOCKED(name) __DECLARE_SEMAPHORE_GENERIC(name,0)
static inline void sema_init (struct semaphore *sem, int val)
{
Index: linux-2.6/include/asm-sparc/semaphore.h
===================================================================
--- linux-2.6.orig/include/asm-sparc/semaphore.h 2007-07-19 22:06:28.000000000 +0200
+++ linux-2.6/include/asm-sparc/semaphore.h 2007-07-19 22:08:44.000000000 +0200
@@ -26,7 +26,6 @@ struct semaphore {
struct semaphore name = __SEMAPHORE_INITIALIZER(name,count)
#define DECLARE_MUTEX(name) __DECLARE_SEMAPHORE_GENERIC(name,1)
-#define DECLARE_MUTEX_LOCKED(name) __DECLARE_SEMAPHORE_GENERIC(name,0)
static inline void sema_init (struct semaphore *sem, int val)
{
Index: linux-2.6/include/asm-sparc64/semaphore.h
===================================================================
--- linux-2.6.orig/include/asm-sparc64/semaphore.h 2007-07-19 22:06:28.000000000 +0200
+++ linux-2.6/include/asm-sparc64/semaphore.h 2007-07-19 22:08:44.000000000 +0200
@@ -26,7 +26,6 @@ struct semaphore {
struct semaphore name = __SEMAPHORE_INITIALIZER(name,count)
#define DECLARE_MUTEX(name) __DECLARE_SEMAPHORE_GENERIC(name, 1)
-#define DECLARE_MUTEX_LOCKED(name) __DECLARE_SEMAPHORE_GENERIC(name, 0)
static inline void sema_init (struct semaphore *sem, int val)
{
Index: linux-2.6/include/asm-v850/semaphore.h
===================================================================
--- linux-2.6.orig/include/asm-v850/semaphore.h 2007-07-19 22:06:28.000000000 +0200
+++ linux-2.6/include/asm-v850/semaphore.h 2007-07-19 22:08:44.000000000 +0200
@@ -22,7 +22,6 @@ struct semaphore {
struct semaphore name = __SEMAPHORE_INITIALIZER (name,count)
#define DECLARE_MUTEX(name) __DECLARE_SEMAPHORE_GENERIC (name,1)
-#define DECLARE_MUTEX_LOCKED(name) __DECLARE_SEMAPHORE_GENERIC (name,0)
static inline void sema_init (struct semaphore *sem, int val)
{
Index: linux-2.6/include/asm-x86_64/semaphore.h
===================================================================
--- linux-2.6.orig/include/asm-x86_64/semaphore.h 2007-07-19 22:06:28.000000000 +0200
+++ linux-2.6/include/asm-x86_64/semaphore.h 2007-07-19 22:08:44.000000000 +0200
@@ -60,7 +60,6 @@ struct semaphore {
struct semaphore name = __SEMAPHORE_INITIALIZER(name,count)
#define DECLARE_MUTEX(name) __DECLARE_SEMAPHORE_GENERIC(name,1)
-#define DECLARE_MUTEX_LOCKED(name) __DECLARE_SEMAPHORE_GENERIC(name,0)
static inline void sema_init (struct semaphore *sem, int val)
{
Index: linux-2.6/include/asm-xtensa/semaphore.h
===================================================================
--- linux-2.6.orig/include/asm-xtensa/semaphore.h 2007-07-19 22:06:28.000000000 +0200
+++ linux-2.6/include/asm-xtensa/semaphore.h 2007-07-19 22:08:44.000000000 +0200
@@ -33,7 +33,6 @@ struct semaphore {
struct semaphore name = __SEMAPHORE_INITIALIZER(name,count)
#define DECLARE_MUTEX(name) __DECLARE_SEMAPHORE_GENERIC(name,1)
-#define DECLARE_MUTEX_LOCKED(name) __DECLARE_SEMAPHORE_GENERIC(name,0)
static inline void sema_init (struct semaphore *sem, int val)
{
Index: linux-2.6/drivers/usb/storage/libusual.c
===================================================================
--- linux-2.6.orig/drivers/usb/storage/libusual.c 2007-07-19 22:06:28.000000000 +0200
+++ linux-2.6/drivers/usb/storage/libusual.c 2007-07-19 22:08:44.000000000 +0200
@@ -30,7 +30,7 @@ static atomic_t usu_bias = ATOMIC_INIT(U
#define BIAS_NAME_SIZE (sizeof("usb-storage"))
static const char *bias_names[3] = { "none", "usb-storage", "ub" };
-static DECLARE_MUTEX_LOCKED(usu_init_notify);
+static struct semaphore usu_init_notify;
static DECLARE_COMPLETION(usu_end_notify);
static atomic_t total_threads = ATOMIC_INIT(0);
@@ -204,6 +204,8 @@ static int __init usb_usual_init(void)
{
int rc;
+ sema_init(&usu_init_notify, 0);
+
rc = usb_register(&usu_driver);
up(&usu_init_notify);
return rc;
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [PATCH] kill DECLARE_MUTEX_LOCKED
2007-07-19 21:11 [PATCH] kill DECLARE_MUTEX_LOCKED Christoph Hellwig
@ 2007-07-20 5:28 ` Satyam Sharma
2007-07-20 7:17 ` Christoph Hellwig
2007-07-20 18:27 ` Andrew Morton
0 siblings, 2 replies; 5+ messages in thread
From: Satyam Sharma @ 2007-07-20 5:28 UTC (permalink / raw)
To: Christoph Hellwig; +Cc: akpm, linux-kernel
Hi Christoph,
On 7/20/07, Christoph Hellwig <hch@lst.de> wrote:
> DECLARE_MUTEX_LOCKED was used for semaphores used as completions and
> we've got rid of them.
Thanks, I'd been meaning to do this for months :-)
Had even audited the kernel for its usage ... just didn't make or
send out a patch, sorry.
> Well, except for one in libusual that the
> maintainer explicitly wants to keep as semaphore.
That comment in libusual is quite nonsensical, IMHO. Note that
usu_init_notify is declared as DECLARE_MUTEX_LOCKED and yet the
author wants us to believe (later, when he's doing that dummy
down();
/* nothing here */
up();
stuff at line no. 181) that the semaphore is somehow "counted" ...
Has anybody tried going through all the logic in that file? Looks totally
weird to me ... :-) Nothing in there that can't be serialized using proper
primitives.
> So convert that
> useage to an explicit sema_init and kill of DECLARE_MUTEX_LOCKED so that
> new code is reminded to use a completion.
and I guess nobody cares a whit for the #if 0'ed stuff in drivers/fc4/fc.c
> Signed-off-by: Christoph Hellwig <hch@lst.de>
Well, probably not worth much, but: Ack.
Satyam
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] kill DECLARE_MUTEX_LOCKED
2007-07-20 5:28 ` Satyam Sharma
@ 2007-07-20 7:17 ` Christoph Hellwig
2007-07-20 8:18 ` Satyam Sharma
2007-07-20 18:27 ` Andrew Morton
1 sibling, 1 reply; 5+ messages in thread
From: Christoph Hellwig @ 2007-07-20 7:17 UTC (permalink / raw)
To: Satyam Sharma; +Cc: Christoph Hellwig, akpm, linux-kernel
On Fri, Jul 20, 2007 at 10:58:34AM +0530, Satyam Sharma wrote:
> That comment in libusual is quite nonsensical, IMHO. Note that
> usu_init_notify is declared as DECLARE_MUTEX_LOCKED and yet the
> author wants us to believe (later, when he's doing that dummy
Given that no one should use libusual and we should kill it and the
abomination called ub I don't really care about fixing this up.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] kill DECLARE_MUTEX_LOCKED
2007-07-20 7:17 ` Christoph Hellwig
@ 2007-07-20 8:18 ` Satyam Sharma
0 siblings, 0 replies; 5+ messages in thread
From: Satyam Sharma @ 2007-07-20 8:18 UTC (permalink / raw)
To: Christoph Hellwig; +Cc: akpm, linux-kernel
Hi,
On 7/20/07, Christoph Hellwig <hch@lst.de> wrote:
> On Fri, Jul 20, 2007 at 10:58:34AM +0530, Satyam Sharma wrote:
> > That comment in libusual is quite nonsensical, IMHO. Note that
> > usu_init_notify is declared as DECLARE_MUTEX_LOCKED and yet the
> > author wants us to believe (later, when he's doing that dummy
>
> Given that no one should use libusual and we should kill it and the
> abomination called ub I don't really care about fixing this up.
I was actually referring to _this_ "comment":
/* A completion does not work here because it's counted. */
at libusual.c:181, and not yours :-)
It's a bogus comment, because the logic in there (usu_init_notify
set to 0 i.e. locked at build time, unlocked to 1 by usb_usual_init()
after usb_register() and the the dummy "down(); up();" by the
probe threads would mean that the semaphore will *never* ever
have a value other than {0, 1}. So contrary to what the author
thought, it's not a counted semaphore.
Satyam
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] kill DECLARE_MUTEX_LOCKED
2007-07-20 5:28 ` Satyam Sharma
2007-07-20 7:17 ` Christoph Hellwig
@ 2007-07-20 18:27 ` Andrew Morton
1 sibling, 0 replies; 5+ messages in thread
From: Andrew Morton @ 2007-07-20 18:27 UTC (permalink / raw)
To: Satyam Sharma; +Cc: Christoph Hellwig, linux-kernel
On Fri, 20 Jul 2007 10:58:34 +0530
"Satyam Sharma" <satyam.sharma@gmail.com> wrote:
> Well, probably not worth much, but: Ack.
um. The time and effort which you put into reviewing a patch pretty much
directly subtracts from the time and effort which I need to put into doing
the same.
So: worth lots to me, thanks.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2007-07-20 18:28 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-07-19 21:11 [PATCH] kill DECLARE_MUTEX_LOCKED Christoph Hellwig
2007-07-20 5:28 ` Satyam Sharma
2007-07-20 7:17 ` Christoph Hellwig
2007-07-20 8:18 ` Satyam Sharma
2007-07-20 18:27 ` Andrew Morton
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox