07 Sep, 2018

3 commits

  • Drop pack pragma. The header file defines only in-memory structures.

    Signed-off-by: Jan Kara

    Jan Kara
     
  • We don't support Free Space Table and Free Space Bitmap as specified by
    UDF standard for writing as we don't support erasing blocks before
    overwriting them. Just drop the handling of these structures as
    partition descriptor checking code already makes sure such filesystems
    can be mounted only read-only.

    Signed-off-by: Jan Kara

    Jan Kara
     
  • There are certain filesystem features which we support for reading but
    not for writing. We properly refuse to mount such filesystems read-write
    however for some features (such as read-only partitions), we don't check
    for these features when remounting the filesystem from read-only to
    read-write. Thus such filesystems could be remounted read-write leading
    to strange behavior (most likely crashes).

    Fix the problem by marking in superblock whether the filesystem has some
    features that are supported in read-only mode and check this flag during
    remount.

    Signed-off-by: Jan Kara

    Jan Kara
     

27 Jun, 2018

1 commit

  • The VFS structures are finally converted to always use 64-bit timestamps,
    and this file system can represent a long range of on-disk timestamps
    already, so now let's fit in the missing bits for udf.

    Signed-off-by: Arnd Bergmann
    Signed-off-by: Jan Kara

    Arnd Bergmann
     

02 Mar, 2018

1 commit

  • If logical volume integrity descriptor contains non-closed integrity
    type when mounting the volume, there are high chances that the volume is
    not consistent (device was detached before the filesystem was
    unmounted). Don't touch integrity type of such volume so that fsck can
    recognize it and check such filesystem.

    Reported-by: Pali Rohár
    Reviewed-by: Pali Rohár
    Signed-off-by: Jan Kara

    Jan Kara
     

27 Feb, 2018

1 commit

  • Currently uid=ignore and gid=ignore make no sense without uid=
    and gid= respectively as they result in all files having invalid
    uid / gid which then doesn't allow even root to modify files and thus
    causes confusion. And since commit ca76d2d8031f "UDF: fix UID and GID
    mount option ignorance" (from over 10 years ago) uid= overrides
    all uids on disk as uid=ignore does. So just silently ignore uid=ignore
    mount option.

    Reviewed-by: Pali Rohár
    Signed-off-by: Jan Kara

    Jan Kara
     

02 Nov, 2017

1 commit

  • Many source files in the tree are missing licensing information, which
    makes it harder for compliance tools to determine the correct license.

    By default all files without license information are under the default
    license of the kernel, which is GPL version 2.

    Update the files which contain no license information with the 'GPL-2.0'
    SPDX license identifier. The SPDX identifier is a legally binding
    shorthand, which can be used instead of the full boiler plate text.

    This patch is based on work done by Thomas Gleixner and Kate Stewart and
    Philippe Ombredanne.

    How this work was done:

    Patches were generated and checked against linux-4.14-rc6 for a subset of
    the use cases:
    - file had no licensing information it it.
    - file was a */uapi/* one with no licensing information in it,
    - file was a */uapi/* one with existing licensing information,

    Further patches will be generated in subsequent months to fix up cases
    where non-standard license headers were used, and references to license
    had to be inferred by heuristics based on keywords.

    The analysis to determine which SPDX License Identifier to be applied to
    a file was done in a spreadsheet of side by side results from of the
    output of two independent scanners (ScanCode & Windriver) producing SPDX
    tag:value files created by Philippe Ombredanne. Philippe prepared the
    base worksheet, and did an initial spot review of a few 1000 files.

    The 4.13 kernel was the starting point of the analysis with 60,537 files
    assessed. Kate Stewart did a file by file comparison of the scanner
    results in the spreadsheet to determine which SPDX license identifier(s)
    to be applied to the file. She confirmed any determination that was not
    immediately clear with lawyers working with the Linux Foundation.

    Criteria used to select files for SPDX license identifier tagging was:
    - Files considered eligible had to be source code files.
    - Make and config files were included as candidates if they contained >5
    lines of source
    - File already had some variant of a license header in it (even if
    Reviewed-by: Philippe Ombredanne
    Reviewed-by: Thomas Gleixner
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

19 May, 2016

1 commit

  • UDF/OSTA terminology is confusing. Partition Numbers (PNs) are arbitrary
    16-bit values, one for each physical partition in the volume. Partition
    Reference Numbers (PRNs) are indices into the the Partition Map Table
    and do not necessarily equal the PN of the mapped partition.

    The current metadata code mistakenly uses the PN instead of the PRN when
    mapping metadata blocks to physical/sparable blocks. Windows-created
    UDF 2.5 discs for some reason use large, arbitrary PNs, resulting in
    mount failure and KASAN read warnings in udf_read_inode().

    For example, a NetBSD UDF 2.5 partition might look like this:

    PRN PN Type
    --- -- ----
    0 0 Sparable
    1 0 Metadata

    Since PRN == PN, we are fine.

    But Windows could gives us:

    PRN PN Type
    --- ---- ----
    0 8192 Sparable
    1 8192 Metadata

    So udf_read_inode() will start out by checking the partition length in
    sbi->s_partmaps[8192], which is obviously out of bounds.

    Fix this by creating a new field (s_phys_partition_ref) in struct
    udf_meta_data, referencing whatever physical or sparable map has the
    same partition number as the metadata partition.

    [JK: Add comment about s_phys_partition_ref, change its name]

    Signed-off-by: Alden Tondettar
    Signed-off-by: Jan Kara

    Alden Tondettar
     

28 Apr, 2016

1 commit


24 Sep, 2013

1 commit

  • A user has reported an oops in udf_statfs() that was caused by
    numOfPartitions entry in LVID structure being corrupted. Fix the problem
    by verifying whether numOfPartitions makes sense at least to the extent
    that LVID fits into a single block as it should.

    Reported-by: Juergen Weigert
    Signed-off-by: Jan Kara

    Jan Kara
     

06 Feb, 2013

3 commits

  • s_extLength was assigned to but the value was never really used. So
    just remove the field.

    Signed-off-by: Jan Kara

    Jan Kara
     
  • struct udf_bitmap has array of buffer pointers attached to it. The code
    unnecessarily used s_block_bitmap as a pointer to the array instead of
    the standard trick of using 0 length array in the declaration. Change
    that to make code more readable and actually shrink the structure by one
    pointer.

    Signed-off-by: Jan Kara

    Jan Kara
     
  • For large UDF filesystems with 512-byte blocks the number of necessary
    bitmap blocks is larger than 2^16 so s_nr_groups in udf_bitmap overflows
    (the number will overflow for filesystems larger than 128 GB with
    512-byte blocks). That results in ENOSPC errors despite the filesystem
    has plenty of free space.

    Fix the problem by changing s_nr_groups' type to 'int'. That is enough
    even for filesystems 2^32 blocks (UDF maximum) and 512-byte blocksize.

    Reported-and-tested-by: v10lator@myway.de
    Signed-off-by: Jan Kara

    Jan Kara
     

21 Sep, 2012

1 commit


04 Jan, 2012

1 commit

  • note re mount options: fmask and dmask are explicitly truncated to 12bit,
    UDF_INVALID_MODE just needs to be guaranteed to differ from any such value.
    And umask is used only in &= with umode_t, so we ignore other bits anyway.

    Signed-off-by: Al Viro

    Al Viro
     

01 Nov, 2011

2 commits