| From 488165214dada78c7ffd0ee0fc0bcce216d31a9d Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Fri, 17 Jan 2020 12:11:14 +0100 |
| Subject: udf: Allow writing to 'Rewritable' partitions |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| 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 |
| |