From: Hin-Tak Leung <hintak_leung@yahoo.co.uk>
To: Pavel Ivanov <paivanof@gmail.com>
Cc: linux-fsdevel@vger.kernel.org,
linux-kernel <linux-kernel@vger.kernel.org>
Subject: Re: Kernel 3.1.0-rc4 oops when connecting iPod
Date: Sun, 4 Sep 2011 01:37:41 +0100 (BST) [thread overview]
Message-ID: <1315096661.23425.YahooMailClassic@web29510.mail.ird.yahoo.com> (raw)
In-Reply-To: <CAG1a4rscDrbiCKxSPvbkG7SutQ5HCU2tX9FJEv81nFuVxLWekg@mail.gmail.com>
--- On Sun, 4/9/11, Pavel Ivanov <paivanof@gmail.com> wrote:
> On Sat, Sep 3, 2011 at 7:35 PM,
> >> So these 2 pointers are exactly what causing the
> trouble.
> >
> > This is interesting... so it would appear that
> hfsplus_read_wrapper() isn't working correctly, but enough
> of correct information to pass checks. I just re-read your
> e-mail and your device has a logical block size of 4096
> bytes, whereas most of the hfsplus code uses a block size of
> 512... you will need to look into hfsplus_submit_bio(),
> which is in the same file wrapper.c.
>
> I've looked into the code myself a little and here's what I
> see.
> hfsplus_read_wrapper() calls to hfsplus_submit_bio() twice
> to fill
> sbi->s_vhdr and sbi->s_backup_vhdr. And according to
> parameters they
> are filled with pointers into sbi->s_vhdr_buf and
> sbi->s_backup_vhdr_buf respectively. It's done with the
> following code
> at fs/hfsplus/wrapper.c:79:
>
> if (!(rw & WRITE) && data)
> *data = (u8 *)buf +
> offset;
>
> So s_vhdr and s_backup_vhdr shouldn't be freed, s_vhdr_buf
> and
> s_backup_vhdr_buf should be freed instead. And indeed
> changing in
> hfsplus_fill_super()
>
> kfree(sbi->s_vhdr);
> kfree(sbi->s_backup_vhdr);
>
> to
>
> kfree(sbi->s_vhdr_buf);
> kfree(sbi->s_backup_vhdr_buf);
>
> fixes BUG reports from SLUB.
The code around there is a bit too dense, and both of the *_buf are recent introductions (and temp values, I think) as is hfsplus_submit_bio() itself, around the 2.6.39/3.0 time frame. I think the intention is to fill s_vhdr/s_backup_vhdr via mulitple fetches using *_buf as temp buffer.
> Now, the problem with "too large" error is trickier.
> According to this message
>
> >> [ 92.549197] hfs: filesystem size too large
> blksz_shift=14, total_blocks=486494
>
> HFS thinks that my iPod has block size of 16 KiB. But
> generic_check_addressable() decides that everything with
> blocks larger
> than PAGE_CACHE_SHIFT (i.e. 4 KiB on my system) cannot be
> addressable
> and thus filesystem cannot be mounted. I guess it wasn't
> supposed to
> be that way. Is hfsplus_read_wrapper() wrong in determining
> block size
> or all iPods where this was tested actually had block size
> 4 KiB or
> less?
Your logical sector size is 4k according to dmesg and hfs block size is 512 so that 16KiB is a bit dodgy.
> > It is going to be difficult to do anything without the
> actual device and 8GB is too large to be send around.
> Assuming it is mostly music/media and there isn't too much
> stuff which is too confident/private, can I ask you to send
> me say, the first few MB of the disk?
>
> I'll send it in a separate email bypassing lists.
Thanks - I got them now. It will take a while to find my way around though...
next prev parent reply other threads:[~2011-09-04 0:37 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-09-03 3:08 Pavel Ivanov
2011-09-03 3:59 ` Hin-Tak Leung
2011-09-03 4:37 ` Pavel Ivanov
2011-09-03 6:57 ` Hin-Tak Leung
2011-09-03 20:52 ` Pavel Ivanov
2011-09-03 23:35 ` Hin-Tak Leung
2011-09-03 23:59 ` Pavel Ivanov
2011-09-04 0:37 ` Hin-Tak Leung [this message]
2011-09-06 4:35 ` Pavel Ivanov
2011-09-06 5:12 ` Hin-Tak Leung
2011-09-06 15:09 ` Pavel Ivanov
2011-09-11 3:52 ` Pavel Ivanov
2011-09-11 13:46 ` Hin-Tak Leung
2011-09-11 14:14 ` Christoph Hellwig
2011-09-11 14:12 ` Christoph Hellwig
2011-09-12 14:34 ` Christoph Hellwig
2011-09-12 15:19 ` Pavel Ivanov
2011-09-12 15:31 ` Christoph Hellwig
2011-09-13 2:20 ` Pavel Ivanov
2011-09-14 17:42 ` Christoph Hellwig
2011-09-15 14:35 ` Christoph Hellwig
2011-09-12 15:57 ` Hin-Tak Leung
2011-09-07 17:59 ` Seth Forshee
2011-09-08 3:13 ` Hin-Tak Leung
2011-09-08 16:23 ` Seth Forshee
2011-09-09 12:48 ` Christoph Hellwig
2011-09-11 3:32 ` Pavel Ivanov
2011-09-11 14:10 ` Christoph Hellwig
2011-09-12 14:00 ` Pavel Ivanov
2011-09-12 15:27 ` [PATCH] hfsplus: Fix kfree of wrong vhdr pointers Seth Forshee
2011-09-12 15:28 ` Christoph Hellwig
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=1315096661.23425.YahooMailClassic@web29510.mail.ird.yahoo.com \
--to=hintak_leung@yahoo.co.uk \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=paivanof@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
all inboxes | Powered by JetHome®