linux-ide.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
To: benh@kernel.crashing.org
Cc: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>,
	linux-ide@vger.kernel.org, linuxppc-dev@ozlabs.org,
	petkovbb@gmail.com
Subject: Re: ide pmac breakage
Date: Wed, 30 Jul 2008 21:11:54 +0200	[thread overview]
Message-ID: <200807302111.54514.bzolnier@gmail.com> (raw)
In-Reply-To: <1217401052.11188.318.camel@pasglop>

On Wednesday 30 July 2008, Benjamin Herrenschmidt wrote:
> On Tue, 2008-07-29 at 21:26 +0200, Bartlomiej Zolnierkiewicz wrote:
> 
> > I WON!!!
> 
> Only half...

Heh, I wasn't talking about fixing the issue...
(hint: look up the author of the bad commit).

> It goes further and then blows up again. First problem is, this
> unregister interface doesn't quite convey the fact that the HW is gone
> and the IDE code seems to take it's sweet time figuring it out after
> trying some requests. Maybe something smarter can be done here ? ie,
> ide_set_interface_dead() :-)

Sure, it would be great to have controller hotplug working reliably
one day but the recent patches shouldn't really be making things worse
(quite the contrary) so I would prefer to find and learn more about
the cause of regression first.

[ However nothing prevents us from improving the hotplug support in
  parallel to fixing the issue so if you have some ideas that could
  be conveyed in form of patches please go ahead. ]

> mediabay0: switching to 7
> mediabay0: powering down
> media bay 0 is empty
> hdc: status error: status=0x00 { }
> ide: failed opcode was: unknown
> hdc: status error: status=0x00 { }
> ide: failed opcode was: unknown
> 
> Then after this couple of failed attempts at sending commands, it
> crashes with the backtrace below. Another NULL dereference apparently,
> though the DAR value (the faulting address) has been slightly different
> between consecutive tests so it may be a use-after-free too.

Is it actually caused by additional reference counting on drive->gendev?
IOW if you reverse the patch below instead of applying the previous fix
do things work OK again?

> Note that there shouldn't be anything fundamentally different from
> ide-pmac here vs. something like pcmcia IDE cards... do you have one of
> these to test with ?

Nope and I really don't intend to have one.  I count on other people
to take some care of support for host drivers that they maintain/use. ;)

Thanks,
Bart

diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c
index 4e73aee..8f253e5 100644
--- a/drivers/ide/ide-cd.c
+++ b/drivers/ide/ide-cd.c
@@ -57,23 +57,29 @@ static DEFINE_MUTEX(idecd_ref_mutex);
 #define ide_cd_g(disk) \
 	container_of((disk)->private_data, struct cdrom_info, driver)
 
+static void ide_cd_release(struct kref *);
+
 static struct cdrom_info *ide_cd_get(struct gendisk *disk)
 {
 	struct cdrom_info *cd = NULL;
 
 	mutex_lock(&idecd_ref_mutex);
 	cd = ide_cd_g(disk);
-	if (cd)
+	if (cd) {
 		kref_get(&cd->kref);
+		if (ide_device_get(cd->drive)) {
+			kref_put(&cd->kref, ide_cd_release);
+			cd = NULL;
+		}
+	}
 	mutex_unlock(&idecd_ref_mutex);
 	return cd;
 }
 
-static void ide_cd_release(struct kref *);
-
 static void ide_cd_put(struct cdrom_info *cd)
 {
 	mutex_lock(&idecd_ref_mutex);
+	ide_device_put(cd->drive);
 	kref_put(&cd->kref, ide_cd_release);
 	mutex_unlock(&idecd_ref_mutex);
 }


  reply	other threads:[~2008-07-30 19:46 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-07-28  1:29 ide pmac breakage Benjamin Herrenschmidt
2008-07-28  2:02 ` Benjamin Herrenschmidt
2008-07-28 14:31   ` Bartlomiej Zolnierkiewicz
2008-07-29  5:17     ` FUJITA Tomonori
2008-07-29  5:20       ` Benjamin Herrenschmidt
2008-07-29 11:41         ` Bartlomiej Zolnierkiewicz
2008-07-29 12:02           ` Benjamin Herrenschmidt
2008-07-29 12:04             ` Bartlomiej Zolnierkiewicz
2008-07-29 14:45               ` Bartlomiej Zolnierkiewicz
2008-07-29 19:26                 ` Bartlomiej Zolnierkiewicz
2008-07-29 21:30                   ` Benjamin Herrenschmidt
2008-07-30  1:23                   ` FUJITA Tomonori
2008-07-30  6:57                   ` Benjamin Herrenschmidt
2008-07-30 19:11                     ` Bartlomiej Zolnierkiewicz [this message]
2008-07-30 22:49                       ` Benjamin Herrenschmidt
2008-07-31  0:48                         ` Bartlomiej Zolnierkiewicz
2008-07-31  1:09                           ` Benjamin Herrenschmidt
2008-07-31  3:17                             ` Bartlomiej Zolnierkiewicz
2008-07-31  8:49                           ` Alan Cox
2008-07-31  9:11                             ` Benjamin Herrenschmidt
2008-07-31  9:13                               ` Alan Cox
2008-07-31  9:48                                 ` Benjamin Herrenschmidt
2008-07-31  4:25                       ` Benjamin Herrenschmidt
2008-07-31 10:51                         ` Bartlomiej Zolnierkiewicz
2008-08-01 10:54                           ` Bartlomiej Zolnierkiewicz
2008-08-01 22:26                             ` Benjamin Herrenschmidt

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=200807302111.54514.bzolnier@gmail.com \
    --to=bzolnier@gmail.com \
    --cc=benh@kernel.crashing.org \
    --cc=fujita.tomonori@lab.ntt.co.jp \
    --cc=linux-ide@vger.kernel.org \
    --cc=linuxppc-dev@ozlabs.org \
    --cc=petkovbb@gmail.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).