From: Christoph Hellwig <hch@infradead.org>
To: Evgeniy Polyakov <johnpol@2ka.mipt.ru>
Cc: Andrew Morton <akpm@osdl.org>,
greg@kroah.com, linux-kernel@vger.kernel.org
Subject: Re: 2.6.11-rc2-mm1
Date: Tue, 25 Jan 2005 14:23:56 +0000 [thread overview]
Message-ID: <20050125142356.GA20206@infradead.org> (raw)
In-Reply-To: <1106662284.5257.53.camel@uganda>
> > +obj-$(CONFIG_SC_SUPERIO) += superio.o
> > +obj-$(CONFIG_SC_GPIO) += sc_gpio.o
> > +obj-$(CONFIG_SC_ACB) += sc_acb.o
> > +obj-$(CONFIG_SC_PC8736X) += pc8736x.o
> > +obj-$(CONFIG_SC_SCX200) += scx200.o
> > +
> > +superio-objs := sc.o chain.o sc_conn.o
> >
> > please use superio-y += so new conditional objects can be added more easily.
>
> They must be added in the same file and line to allow easy control.
> It is not directory like char/.
Huh?
What I mean is you should write
superio-y += sc.o chain.o sc_conn.o
this allows adding things like
superio-$(CONFIG_FOO) += sc_foo.o
and is generally the canonical form since 2.6
> > +void chain_free(struct dev_chain *ch)
> > +{
> > + memset(ch, 0, sizeof(struct dev_chain));
> > + kfree(ch);
> >
> > The memset completely defeats slab redzoning to catch bugs, don't
> > do that.
>
> What? Does following code also kills redzoning?
>
> int *a;
> a = kmalloc();
> if (a)
> {
> memset(a, 0, sizeof(*a));
> kfree(a);
> }
>
> Consider size of the dev_chain structure...
Sorry, didn't mean redzoning but poisoning in general, little
brainfart on my side. The slab code can set freed objects to
known patters so use after frees can be debugged easily, and
by zeroing a structure before freeing we lose that.
> > Also what's the reason you can't simply put the list_head into struct
> > logical_dev?
>
> Because it is not just list_head, but special structure used for special
> pointer manipulations,
> which you are obviously saw in sc.c
No, I didn't see it. I see that the void pointer ptr in struct dev_chain
always points to a struct sc_dev *, and I see we never change that
pointer at run time. I might have missed something obvious, so maybe
you could point me to it (or even better add a comment describing it)
>
> > +static void pc8736x_fini(void)
> > +{
> > + sc_del_sc_dev(&pc8736x_dev);
> > +
> > + while (atomic_read(&pc8736x_dev.refcnt)) {
> > + printk(KERN_INFO "Waiting for %s to became free: refcnt=%d.\n",
> > + pc8736x_dev.name, atomic_read(&pc8736x_dev.refcnt));
> > +
> > + set_current_state(TASK_INTERRUPTIBLE);
> > + schedule_timeout(HZ);
> > +
> > + if (current->flags & PF_FREEZE)
> > + refrigerator(PF_FREEZE);
> > +
> > + if (signal_pending(current))
> > + flush_signals(current);
> > + }
> > +}
> >
> > And who gurantess this won't deadlock? Please use a dynamically allocated
> > driver model device and it's refcounting, thanks.
>
> Sigh.
>
> Christoph, please read the code before doing such comments.
> I very respect your review and opinion, but only until you respect
> others.
The code above pretty much means you can keep rmmod stalled forever.
Also it seems to be the only code intree doing refrigerator() on anything
but kernel thread. While I can't comment on swsusp internals it surely
looks buggy to me.
> > +#ifndef __SCX200_H
> > +#define __SCX200_H
> > +
> > +#define SCx200_GPIO_SIZE 0x2c
> > +
> > +#endif /* __SCX200_H */
> >
> > Yeah, right - a 30 line header for a single define that's used in a
> > single source file..
>
> Christoph, do you know what SuperIO is?
> I doubt...
>
> It is a small chip, which can include various number of devices.
> SuperIO currently supports only GPIO and ACB, so this header only
> includes
> one define. I do not have hardware(sc1100 based for example) that
> "exports"
> other devices and which can be accessed from the outside of the board,
> so I did not add other defines.
>
> But specially for you I can remove this file, will it satisfy you?
I've just told you it looks extremly silly, you need to decide on your
own whether it's worthwile.
> > Also your locking is broken. sdev_lock sometimes nests outside
> > sdev->lock and sometimes inside. Similarly dev->chain_lock nests
> > inside dev->lock sometimes and sometimes outside. You really need
> > a locking hiearchy document and the lockign should probably be
> > simplified a lot.
>
> It is almost the same like after hand waving say that there is a wind.
>
> Each lock protect it's own data, sometimes it happens when other data is
> locked,
> sometimes not. Yes, probably interrupt handling can race, it requires
> more review,
> I will take a look.
The thing I mention is called lock order reversal, which means a deadlock
in most cases. I don't have the time to actual walk through all codepathes
to tell you whether it can really happen and where, but it's a really
big warning sign.
> Resume:
> Cristoph, you rudely try to show that this code is badly broken.
> It is not.
> It was tested as opposed to your claims, and works as expected.
I've seen tons of code that "works as expected" but still is buggy.
That's why code needs to be both tested (with a workload as
expected and other stress testing that shows it handles loads _not_
expected) and reviewed for errors that don't happen with a normal
load or design problems.
next prev parent reply other threads:[~2005-01-25 14:24 UTC|newest]
Thread overview: 153+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-01-18 7:21 [PATCH] Some fixes for compat ioctl Andi Kleen
2005-01-18 10:34 ` Michael S. Tsirkin
2005-01-18 10:45 ` [PATCH 1/5] compat_ioctl call seems to miss a security hook Michael S. Tsirkin
2005-01-18 19:22 ` Chris Wright
2005-01-20 0:28 ` Michael S. Tsirkin
2005-01-20 0:43 ` Chris Wright
2005-01-20 1:06 ` Michael S. Tsirkin
2005-01-20 1:16 ` Chris Wright
2005-01-20 1:42 ` Michael S. Tsirkin
2005-01-18 10:48 ` [PATCH 2/5] socket ioctl fix (from Andi) Michael S. Tsirkin
2005-01-18 10:55 ` Christoph Hellwig
2005-01-18 11:01 ` Andi Kleen
2005-01-18 10:52 ` [PATCH 3/5] make common ioctls apply for compat Michael S. Tsirkin
2005-01-18 10:57 ` [PATCH 4/5] reminder comment about register_ioctl32_conversion Michael S. Tsirkin
2005-01-18 11:04 ` [PATCH 5/5] symmetry between compat_ioctl and unlocked_ioctl Michael S. Tsirkin
2005-01-24 10:15 ` 2.6.11-rc2-mm1 Andrew Morton
2005-01-24 10:36 ` 2.6.11-rc2-mm1 Adrian Bunk
2005-01-24 11:17 ` 2.6.11-rc2-mm1: v4l-saa7134-module compile error Adrian Bunk
2005-01-24 13:57 ` Gerd Knorr
2005-01-24 17:45 ` Adrian Bunk
2005-01-25 10:15 ` Gerd Knorr
2005-01-25 10:38 ` Adrian Bunk
2005-01-24 11:56 ` 2.6.11-rc2-mm1 Brice Goglin
2005-01-24 13:41 ` 2.6.11-rc2-mm1 Brice Goglin
2005-01-24 14:35 ` 2.6.11-rc2-mm1 Florian Bohrer
2005-01-24 18:52 ` 2.6.11-rc2-mm1 Dave Jones
2005-01-24 20:44 ` 2.6.11-rc2-mm1 Dave Jones
2005-01-24 21:31 ` 2.6.11-rc2-mm1 Brice Goglin
2005-01-25 19:38 ` 2.6.11-rc2-mm1 Dave Jones
2005-01-25 19:58 ` 2.6.11-rc2-mm1 Brice Goglin
2005-01-25 20:29 ` 2.6.11-rc2-mm1 Dave Jones
2005-01-24 12:12 ` 2.6.11-rc2-mm1 Christoph Hellwig
2005-01-24 20:36 ` 2.6.11-rc2-mm1 Karsten Keil
2005-01-24 23:26 ` 2.6.11-rc2-mm1 Christoph Hellwig
2005-01-25 0:35 ` 2.6.11-rc2-mm1 Karsten Keil
2005-01-24 23:32 ` 2.6.11-rc2-mm1 Bartlomiej Zolnierkiewicz
2005-01-24 21:03 ` 2.6.11-rc2-mm1 Andrew Morton
2005-01-24 12:17 ` 2.6.11-rc2-mm1 Christoph Hellwig
2005-01-31 22:42 ` [patch] generic notification layer Robert Love
2005-02-07 11:57 ` 2.6.11-rc2-mm1 Ingo Molnar
2005-02-07 17:30 ` 2.6.11-rc2-mm1 Robert Love
2005-02-07 21:02 ` 2.6.11-rc2-mm1 John McCutchan
2005-01-24 12:25 ` [-mm patch] fix SuperIO compilation Adrian Bunk
2005-01-24 12:34 ` Christoph Hellwig
2005-01-24 13:04 ` Evgeniy Polyakov
2005-01-24 13:56 ` Evgeniy Polyakov
2005-01-24 14:14 ` [1/1] superio: remove unneded exports and make some functions static Evgeniy Polyakov
2005-01-25 6:19 ` Greg KH
2005-01-24 12:48 ` 2.6.11-rc2-mm1: DVB compile error Adrian Bunk
2005-01-24 23:56 ` [linux-dvb-maintainer] " Johannes Stezenbach
2005-01-24 13:52 ` 2.6.11-rc2-mm1 Roman Zippel
2005-01-24 14:24 ` 2.6.11-rc2-mm1 Christoph Hellwig
2005-01-24 14:58 ` 2.6.11-rc2-mm1 Benoit Boissinot
2005-01-24 15:11 ` 2.6.11-rc2-mm1 [compile fix] Benoit Boissinot
2005-01-24 17:25 ` Adrian Bunk
2005-01-24 17:54 ` 2.6.11-rc2-mm1: SuperIO scx200 breakage Adrian Bunk
2005-01-24 18:43 ` Evgeniy Polyakov
2005-01-24 18:29 ` Adrian Bunk
2005-01-24 19:19 ` Evgeniy Polyakov
2005-01-24 19:03 ` Adrian Bunk
2005-01-24 19:46 ` Evgeniy Polyakov
2005-01-24 18:41 ` Jurriaan
2005-01-24 19:23 ` Evgeniy Polyakov
2005-01-24 19:05 ` Adrian Bunk
2005-01-24 19:39 ` Evgeniy Polyakov
2005-01-24 19:32 ` Dmitry Torokhov
2005-01-24 20:28 ` Evgeniy Polyakov
2005-01-27 15:19 ` Bill Davidsen
2005-01-27 16:21 ` Evgeniy Polyakov
2005-01-27 23:12 ` Bill Davidsen
2005-01-24 20:33 ` Christoph Hellwig
2005-01-24 21:10 ` Evgeniy Polyakov
2005-01-24 21:34 ` Greg KH
2005-01-24 21:47 ` Christoph Hellwig
2005-01-25 6:02 ` Greg KH
2005-01-25 7:11 ` Christoph Hellwig
2005-01-25 18:59 ` Jean Delvare
2005-01-25 21:39 ` Evgeniy Polyakov
2005-01-25 21:40 ` Jean Delvare
2005-01-25 22:35 ` Evgeniy Polyakov
2005-01-26 9:55 ` Jean Delvare
2005-01-26 10:55 ` Evgeniy Polyakov
2005-01-26 14:34 ` Jean Delvare
2005-01-26 16:10 ` Evgeniy Polyakov
2005-01-26 19:20 ` Jean Delvare
2005-01-26 20:21 ` Evgeniy Polyakov
2005-01-26 10:14 ` Christoph Hellwig
2005-01-26 10:59 ` Evgeniy Polyakov
2005-01-26 14:00 ` Dmitry Torokhov
2005-01-26 16:38 ` Evgeniy Polyakov
2005-01-26 18:19 ` Adrian Bunk
2005-01-26 19:27 ` Evgeniy Polyakov
2005-01-27 10:20 ` Adrian Bunk
2005-01-27 11:53 ` Evgeniy Polyakov
2005-01-26 18:06 ` Adrian Bunk
2005-01-26 13:12 ` Russell King
2005-01-26 20:01 ` Christoph Hellwig
2005-01-24 18:58 ` 2.6.11-rc2-mm1 Benoit Boissinot
2005-01-24 19:09 ` 2.6.11-rc2-mm1 Adrian Bunk
2005-01-24 19:44 ` 2.6.11-rc2-mm1 - fix a typo in nfs3proc.c Benoit Boissinot
2005-01-24 20:24 ` 2.6.11-rc2-mm1 - compile fix Benoit Boissinot
2005-01-24 20:26 ` [PATCH] move common compat ioctls to hash Michael S. Tsirkin
2005-01-25 6:17 ` Andi Kleen
2005-01-26 8:40 ` Michael S. Tsirkin
2005-01-25 0:03 ` 2.6.11-rc2-mm1: fuse patch needs new libs Sytse Wielinga
2005-01-25 7:31 ` Miklos Szeredi
2005-01-27 15:45 ` Bill Davidsen
2005-01-27 15:56 ` Sytse Wielinga
2005-01-27 16:11 ` Miklos Szeredi
2005-01-27 18:09 ` Christoph Hellwig
2005-01-25 1:01 ` 2.6.11-rc2-mm1 Brice Goglin
2005-01-25 1:30 ` 2.6.11-rc2-mm1 (AE_AML_NO_OPERAND) Len Brown
2005-01-25 18:41 ` 2.6.11-rc2-mm1 Pavel Machek
2005-01-25 19:10 ` 2.6.11-rc2-mm1 Espen Fjellvær Olsen
2005-01-25 12:53 ` 2.6.11-rc2-mm1 Christoph Hellwig
2005-01-25 14:11 ` 2.6.11-rc2-mm1 Evgeniy Polyakov
2005-01-25 14:23 ` Christoph Hellwig [this message]
2005-01-25 15:24 ` 2.6.11-rc2-mm1 Evgeniy Polyakov
2005-01-25 15:34 ` 2.6.11-rc2-mm1 Bartlomiej Zolnierkiewicz
2005-01-25 16:04 ` 2.6.11-rc2-mm1 Evgeniy Polyakov
2005-01-25 18:21 ` 2.6.11-rc2-mm1 Jörn Engel
2005-01-25 21:17 ` 2.6.11-rc2-mm1 Evgeniy Polyakov
2005-01-26 2:20 ` 2.6.11-rc2-mm1 Jörn Engel
2005-01-25 15:36 ` 2.6.11-rc2-mm1 Paulo Marques
2005-01-25 21:08 ` 2.6.11-rc2-mm1 Evgeniy Polyakov
2005-01-25 16:11 ` 2.6.11-rc2-mm1 Dmitry Torokhov
2005-01-25 21:14 ` 2.6.11-rc2-mm1 Evgeniy Polyakov
2005-01-26 4:57 ` 2.6.11-rc2-mm1 Dmitry Torokhov
2005-01-26 8:25 ` 2.6.11-rc2-mm1 Evgeniy Polyakov
2005-01-26 13:46 ` 2.6.11-rc2-mm1 Dmitry Torokhov
2005-01-26 14:59 ` 2.6.11-rc2-mm1 Evgeniy Polyakov
2005-01-26 15:26 ` 2.6.11-rc2-mm1 Dmitry Torokhov
2005-01-26 15:54 ` 2.6.11-rc2-mm1 Evgeniy Polyakov
2005-01-26 16:25 ` 2.6.11-rc2-mm1 Dmitry Torokhov
2005-01-26 16:46 ` 2.6.11-rc2-mm1 Evgeniy Polyakov
2005-01-26 16:55 ` 2.6.11-rc2-mm1 Dmitry Torokhov
2005-01-26 17:39 ` 2.6.11-rc2-mm1 Evgeniy Polyakov
2005-01-26 18:26 ` 2.6.11-rc2-mm1 Dmitry Torokhov
2005-01-26 20:07 ` 2.6.11-rc2-mm1 Evgeniy Polyakov
2005-01-26 20:22 ` 2.6.11-rc2-mm1 Dmitry Torokhov
2005-01-27 17:33 ` 2.6.11-rc2-mm1 Evgeniy Polyakov
2005-01-25 22:42 ` 2.6.11-rc2-mm1 Christoph Hellwig
2005-01-26 8:31 ` 2.6.11-rc2-mm1 Evgeniy Polyakov
2005-01-26 13:32 ` 2.6.11-rc2-mm1 Dmitry Torokhov
2005-01-26 14:44 ` 2.6.11-rc2-mm1 Evgeniy Polyakov
2005-01-25 19:35 ` 2.6.11-rc2-mm1 Pavel Machek
2005-01-25 19:12 ` 2.6.11-rc2-mm1 Marcos D. Marado Torres
2005-01-25 23:07 ` 2.6.11-rc2-mm1 Barry K. Nathan
2005-01-26 2:40 ` 2.6.11-rc2-mm1 William Lee Irwin III
2005-01-26 2:40 ` 2.6.11-rc2-mm1 William Lee Irwin III
2005-01-26 4:44 ` [PATCH] ppc64: fix use kref for device_node refcounting Nathan Lynch
2005-01-27 6:18 ` 2.6.11-rc2-mm1 William Lee Irwin III
2005-01-27 9:14 ` 2.6.11-rc2-mm1 William Lee Irwin III
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20050125142356.GA20206@infradead.org \
--to=hch@infradead.org \
--cc=akpm@osdl.org \
--cc=greg@kroah.com \
--cc=johnpol@2ka.mipt.ru \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.