lkml.org 
[lkml]   [2020]   [Feb]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 007/195] udf: Allow writing to Rewritable partitions
    Date
    From: Jan Kara <jack@suse.cz>

    [ Upstream commit 15fb05fd286ac57a0802d71624daeb5c1c2d5b07 ]

    UDF 2.60 standard states in section 2.2.14.2:

    A partition with Access Type 3 (rewritable) shall define a Freed
    Space Bitmap or a Freed Space Table, see 2.3.3. All other partitions
    shall not define a Freed Space Bitmap or a Freed Space Table.

    Rewritable partitions are used on media that require some form of
    preprocessing before re-writing data (for example legacy MO). Such
    partitions shall use Access Type 3.

    Overwritable partitions are used on media that do not require
    preprocessing before overwriting data (for example: CD-RW, DVD-RW,
    DVD+RW, DVD-RAM, BD-RE, HD DVD-Rewritable). Such partitions shall
    use Access Type 4.

    however older versions of the standard didn't have this wording and
    there are tools out there that create UDF filesystems with rewritable
    partitions but that don't contain a Freed Space Bitmap or a Freed Space
    Table on media that does not require pre-processing before overwriting a
    block. So instead of forcing media with rewritable partition read-only,
    base this decision on presence of a Freed Space Bitmap or a Freed Space
    Table.

    Reported-by: Pali Rohár <pali.rohar@gmail.com>
    Reviewed-by: Pali Rohár <pali.rohar@gmail.com>
    Fixes: b085fbe2ef7f ("udf: Fix crash during mount")
    Link: https://lore.kernel.org/linux-fsdevel/20200112144735.hj2emsoy4uwsouxz@pali
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    fs/udf/super.c | 1 -
    1 file changed, 1 deletion(-)

    diff --git a/fs/udf/super.c b/fs/udf/super.c
    index 7af011dc9ae8a..6fd0f14e9dd22 100644
    --- a/fs/udf/super.c
    +++ b/fs/udf/super.c
    @@ -999,7 +999,6 @@ static int check_partition_desc(struct super_block *sb,
    switch (le32_to_cpu(p->accessType)) {
    case PD_ACCESS_TYPE_READ_ONLY:
    case PD_ACCESS_TYPE_WRITE_ONCE:
    - case PD_ACCESS_TYPE_REWRITABLE:
    case PD_ACCESS_TYPE_NONE:
    goto force_ro;
    }
    --
    2.20.1


    \
     
     \ /
      Last update: 2020-02-10 14:36    [W:2.071 / U:0.776 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site