From: Jan Kara <jack@suse.cz>
To: Steve Magnani <steve.magnani@digidescorp.com>
Cc: Jan Kara <jack@suse.com>,
linux-kernel@vger.kernel.org,
"Steven J . Magnani" <steve@digidescorp.com>
Subject: Re: [PATCH] udf: Fix 64-bit sign extension issues affecting blocks > 0x7FFFFFFF
Date: Tue, 10 Oct 2017 09:33:07 +0200 [thread overview]
Message-ID: <20171010073307.GA775@quack2.suse.cz> (raw)
In-Reply-To: <1507561492-21504-1-git-send-email-steve@digidescorp.com>
On Mon 09-10-17 10:04:52, Steve Magnani wrote:
> Large (> 1 TiB) UDF filesystems appear subject to several problems when
> mounted on 64-bit systems:
>
> * readdir() can fail on a directory containing File Identifiers residing
> above 0x7FFFFFFF. This manifests as a 'ls' command failing with EIO.
>
> * FIBMAP on a file block located above 0x7FFFFFFF can return a negative
> value. The low 32 bits are correct, but applications that don't mask the
> high 32 bits of the result can perform incorrectly.
>
> * Unsigned values > 0x7FFFFFFF are output as negative numbers in some
> driver printks, e.g.:
> Partition (0 type 1511) starts at physical 460, block length -1779968542
>
> Take care to use "%u" when printing unsigned values and to use unsigned
> types to store UDF block addresses.
>
> Signed-off-by: Steven J. Magnani <steve@digidescorp.com>
Thanks for looking into this and for the patch! However the patch seems to
be mixing two changes into one which I'd prefer to be separate patches:
1) Changes so that physical block numbers are stored in uint32_t (and
accompanying format string changes). Also when doing this, could you please
create a dedicated type like
typedef uint32_t udf_pblk_t;
and use it instead of uint32_t? That way it would be cleaner what's going
on. Thanks!
2) Changes fixing signedness in various format strings for various types -
put these in a separare patch please.
> --- a/fs/udf/balloc.c (revision 26779)
> +++ b/fs/udf/balloc.c (working copy)
...
> @@ -151,7 +151,7 @@
> bh = bitmap->s_block_bitmap[bitmap_nr];
> for (i = 0; i < count; i++) {
> if (udf_set_bit(bit + i, bh->b_data)) {
> - udf_debug("bit %ld already set\n", bit + i);
> + udf_debug("bit %lu already set\n", bit + i);
This change looks wrong - bit and i are signed. However they are ints, not
longs, so that should indeed be fixed.
Honza
--
Jan Kara <jack@suse.com>
SUSE Labs, CR
next prev parent reply other threads:[~2017-10-10 7:33 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-09 15:04 Steve Magnani
2017-10-10 7:33 ` Jan Kara [this message]
2017-10-11 3:30 ` Steve Magnani
2017-10-11 8:27 ` Jan Kara
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=20171010073307.GA775@quack2.suse.cz \
--to=jack@suse.cz \
--cc=jack@suse.com \
--cc=linux-kernel@vger.kernel.org \
--cc=steve.magnani@digidescorp.com \
--cc=steve@digidescorp.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
Powered by JetHome