]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
Fixes for 4.4
authorSasha Levin <sashal@kernel.org>
Thu, 10 Sep 2020 02:38:09 +0000 (22:38 -0400)
committerSasha Levin <sashal@kernel.org>
Thu, 10 Sep 2020 02:38:09 +0000 (22:38 -0400)
Signed-off-by: Sasha Levin <sashal@kernel.org>
queue-4.4/affs-fix-basic-permission-bits-to-actually-work.patch [new file with mode: 0644]
queue-4.4/alsa-firewire-digi00x-add-support-for-console-models.patch [new file with mode: 0644]
queue-4.4/alsa-firewire-digi00x-exclude-avid-adrenaline-from-d.patch [new file with mode: 0644]
queue-4.4/alsa-firewire-tascam-exclude-tascam-fe-8-from-detect.patch [new file with mode: 0644]
queue-4.4/fs-affs-use-octal-for-permissions.patch [new file with mode: 0644]
queue-4.4/series

diff --git a/queue-4.4/affs-fix-basic-permission-bits-to-actually-work.patch b/queue-4.4/affs-fix-basic-permission-bits-to-actually-work.patch
new file mode 100644 (file)
index 0000000..4fd3114
--- /dev/null
@@ -0,0 +1,179 @@
+From 3ab007d475a1754bc47231ec4f82f08961bbdb97 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 27 Aug 2020 17:49:00 +0200
+Subject: affs: fix basic permission bits to actually work
+
+From: Max Staudt <max@enpas.org>
+
+[ Upstream commit d3a84a8d0dde4e26bc084b36ffcbdc5932ac85e2 ]
+
+The basic permission bits (protection bits in AmigaOS) have been broken
+in Linux' AFFS - it would only set bits, but never delete them.
+Also, contrary to the documentation, the Archived bit was not handled.
+
+Let's fix this for good, and set the bits such that Linux and classic
+AmigaOS can coexist in the most peaceful manner.
+
+Also, update the documentation to represent the current state of things.
+
+Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
+Cc: stable@vger.kernel.org
+Signed-off-by: Max Staudt <max@enpas.org>
+Signed-off-by: David Sterba <dsterba@suse.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ Documentation/filesystems/affs.txt | 16 ++++++++++------
+ fs/affs/amigaffs.c                 | 27 +++++++++++++++++++++++++++
+ fs/affs/file.c                     | 26 +++++++++++++++++++++++++-
+ 3 files changed, 62 insertions(+), 7 deletions(-)
+
+diff --git a/Documentation/filesystems/affs.txt b/Documentation/filesystems/affs.txt
+index 71b63c2b98410..a8f1a58e36922 100644
+--- a/Documentation/filesystems/affs.txt
++++ b/Documentation/filesystems/affs.txt
+@@ -93,13 +93,15 @@ The Amiga protection flags RWEDRWEDHSPARWED are handled as follows:
+   - R maps to r for user, group and others. On directories, R implies x.
+-  - If both W and D are allowed, w will be set.
++  - W maps to w.
+   - E maps to x.
+-  - H and P are always retained and ignored under Linux.
++  - D is ignored.
+-  - A is always reset when a file is written to.
++  - H, S and P are always retained and ignored under Linux.
++
++  - A is cleared when a file is written to.
+ User id and group id will be used unless set[gu]id are given as mount
+ options. Since most of the Amiga file systems are single user systems
+@@ -111,11 +113,13 @@ Linux -> Amiga:
+ The Linux rwxrwxrwx file mode is handled as follows:
+-  - r permission will set R for user, group and others.
++  - r permission will allow R for user, group and others.
++
++  - w permission will allow W for user, group and others.
+-  - w permission will set W and D for user, group and others.
++  - x permission of the user will allow E for plain files.
+-  - x permission of the user will set E for plain files.
++  - D will be allowed for user, group and others.
+   - All other flags (suid, sgid, ...) are ignored and will
+     not be retained.
+diff --git a/fs/affs/amigaffs.c b/fs/affs/amigaffs.c
+index a148c7ecb35d3..c1b344e56e855 100644
+--- a/fs/affs/amigaffs.c
++++ b/fs/affs/amigaffs.c
+@@ -417,24 +417,51 @@ mode_to_prot(struct inode *inode)
+       u32 prot = AFFS_I(inode)->i_protect;
+       umode_t mode = inode->i_mode;
++      /*
++       * First, clear all RWED bits for owner, group, other.
++       * Then, recalculate them afresh.
++       *
++       * We'll always clear the delete-inhibit bit for the owner, as that is
++       * the classic single-user mode AmigaOS protection bit and we need to
++       * stay compatible with all scenarios.
++       *
++       * Since multi-user AmigaOS is an extension, we'll only set the
++       * delete-allow bit if any of the other bits in the same user class
++       * (group/other) are used.
++       */
++      prot &= ~(FIBF_NOEXECUTE | FIBF_NOREAD
++                | FIBF_NOWRITE | FIBF_NODELETE
++                | FIBF_GRP_EXECUTE | FIBF_GRP_READ
++                | FIBF_GRP_WRITE   | FIBF_GRP_DELETE
++                | FIBF_OTR_EXECUTE | FIBF_OTR_READ
++                | FIBF_OTR_WRITE   | FIBF_OTR_DELETE);
++
++      /* Classic single-user AmigaOS flags. These are inverted. */
+       if (!(mode & 0100))
+               prot |= FIBF_NOEXECUTE;
+       if (!(mode & 0400))
+               prot |= FIBF_NOREAD;
+       if (!(mode & 0200))
+               prot |= FIBF_NOWRITE;
++
++      /* Multi-user extended flags. Not inverted. */
+       if (mode & 0010)
+               prot |= FIBF_GRP_EXECUTE;
+       if (mode & 0040)
+               prot |= FIBF_GRP_READ;
+       if (mode & 0020)
+               prot |= FIBF_GRP_WRITE;
++      if (mode & 0070)
++              prot |= FIBF_GRP_DELETE;
++
+       if (mode & 0001)
+               prot |= FIBF_OTR_EXECUTE;
+       if (mode & 0004)
+               prot |= FIBF_OTR_READ;
+       if (mode & 0002)
+               prot |= FIBF_OTR_WRITE;
++      if (mode & 0007)
++              prot |= FIBF_OTR_DELETE;
+       AFFS_I(inode)->i_protect = prot;
+ }
+diff --git a/fs/affs/file.c b/fs/affs/file.c
+index 659c579c4588b..38e0fd4caf2bb 100644
+--- a/fs/affs/file.c
++++ b/fs/affs/file.c
+@@ -426,6 +426,24 @@ static int affs_write_begin(struct file *file, struct address_space *mapping,
+       return ret;
+ }
++static int affs_write_end(struct file *file, struct address_space *mapping,
++                        loff_t pos, unsigned int len, unsigned int copied,
++                        struct page *page, void *fsdata)
++{
++      struct inode *inode = mapping->host;
++      int ret;
++
++      ret = generic_write_end(file, mapping, pos, len, copied, page, fsdata);
++
++      /* Clear Archived bit on file writes, as AmigaOS would do */
++      if (AFFS_I(inode)->i_protect & FIBF_ARCHIVED) {
++              AFFS_I(inode)->i_protect &= ~FIBF_ARCHIVED;
++              mark_inode_dirty(inode);
++      }
++
++      return ret;
++}
++
+ static sector_t _affs_bmap(struct address_space *mapping, sector_t block)
+ {
+       return generic_block_bmap(mapping,block,affs_get_block);
+@@ -435,7 +453,7 @@ const struct address_space_operations affs_aops = {
+       .readpage = affs_readpage,
+       .writepage = affs_writepage,
+       .write_begin = affs_write_begin,
+-      .write_end = generic_write_end,
++      .write_end = affs_write_end,
+       .direct_IO = affs_direct_IO,
+       .bmap = _affs_bmap
+ };
+@@ -793,6 +811,12 @@ done:
+       if (tmp > inode->i_size)
+               inode->i_size = AFFS_I(inode)->mmu_private = tmp;
++      /* Clear Archived bit on file writes, as AmigaOS would do */
++      if (AFFS_I(inode)->i_protect & FIBF_ARCHIVED) {
++              AFFS_I(inode)->i_protect &= ~FIBF_ARCHIVED;
++              mark_inode_dirty(inode);
++      }
++
+ err_first_bh:
+       unlock_page(page);
+       page_cache_release(page);
+-- 
+2.25.1
+
diff --git a/queue-4.4/alsa-firewire-digi00x-add-support-for-console-models.patch b/queue-4.4/alsa-firewire-digi00x-add-support-for-console-models.patch
new file mode 100644 (file)
index 0000000..e0013e5
--- /dev/null
@@ -0,0 +1,126 @@
+From 10cb1cd8c9c82d96ecc636eed4614d2174d187f6 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Sun, 2 Apr 2017 23:48:24 +0900
+Subject: ALSA: firewire-digi00x: add support for console models of Digi00x
+ series
+
+From: Takashi Sakamoto <o-takashi@sakamocchi.jp>
+
+[ Upstream commit 13e005f9f933a35b5e55c9d36f151efe2a8383ec ]
+
+Digi00x series includes two types of unit; rack and console. As long as
+reading information on config rom of Digi 002 console, 'MODEL_ID' field
+has a different value from the one on Digi 002 rack.
+
+We've already got a test report from users with Digi 003 rack. We can
+assume that console type and rack type has different value in the field.
+
+This commit adds a device entry for console type. For following commits,
+this commit also adds a member to 'struct snd_digi00x' to identify console
+type.
+
+$ cd linux-firewire-utils/src
+$ python2 ./crpp < /sys/bus/firewire/devices/fw1/config_rom
+               ROM header and bus information block
+               -----------------------------------------------------------------
+400  0404f9d0  bus_info_length 4, crc_length 4, crc 63952
+404  31333934  bus_name "1394"
+408  60647002  irmc 0, cmc 1, isc 1, bmc 0, cyc_clk_acc 100, max_rec 7 (256)
+40c  00a07e00  company_id 00a07e     |
+410  00a30000  device_id 0000a30000  | EUI-64 00a07e0000a30000
+
+               root directory
+               -----------------------------------------------------------------
+414  00058a39  directory_length 5, crc 35385
+418  0c0043a0  node capabilities
+41c  04000001  hardware version
+420  0300a07e  vendor
+424  81000007  --> descriptor leaf at 440
+428  d1000001  --> unit directory at 42c
+
+               unit directory at 42c
+               -----------------------------------------------------------------
+42c  00046674  directory_length 4, crc 26228
+430  120000a3  specifier id
+434  13000001  version
+438  17000001  model
+43c  81000007  --> descriptor leaf at 458
+
+               descriptor leaf at 440
+               -----------------------------------------------------------------
+440  00055913  leaf_length 5, crc 22803
+444  000050f2  descriptor_type 00, specifier_ID 50f2
+448  80000000
+44c  44696769
+450  64657369
+454  676e0000
+
+               descriptor leaf at 458
+               -----------------------------------------------------------------
+458  0004a6fd  leaf_length 4, crc 42749
+45c  00000000  textual descriptor
+460  00000000  minimal ASCII
+464  44696769  "Digi"
+468  20303032  " 002"
+
+Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ sound/firewire/digi00x/digi00x.c | 13 +++++++++++--
+ sound/firewire/digi00x/digi00x.h |  1 +
+ 2 files changed, 12 insertions(+), 2 deletions(-)
+
+diff --git a/sound/firewire/digi00x/digi00x.c b/sound/firewire/digi00x/digi00x.c
+index 1f33b7a1fca4c..6973a7ff1c503 100644
+--- a/sound/firewire/digi00x/digi00x.c
++++ b/sound/firewire/digi00x/digi00x.c
+@@ -13,7 +13,8 @@ MODULE_AUTHOR("Takashi Sakamoto <o-takashi@sakamocchi.jp>");
+ MODULE_LICENSE("GPL v2");
+ #define VENDOR_DIGIDESIGN     0x00a07e
+-#define MODEL_DIGI00X         0x000002
++#define MODEL_CONSOLE         0x000001
++#define MODEL_RACK            0x000002
+ static int name_card(struct snd_dg00x *dg00x)
+ {
+@@ -75,6 +76,8 @@ static int snd_dg00x_probe(struct fw_unit *unit,
+       spin_lock_init(&dg00x->lock);
+       init_waitqueue_head(&dg00x->hwdep_wait);
++      dg00x->is_console = entry->model_id == MODEL_CONSOLE;
++
+       err = name_card(dg00x);
+       if (err < 0)
+               goto error;
+@@ -138,7 +141,13 @@ static const struct ieee1394_device_id snd_dg00x_id_table[] = {
+               .match_flags = IEEE1394_MATCH_VENDOR_ID |
+                              IEEE1394_MATCH_MODEL_ID,
+               .vendor_id = VENDOR_DIGIDESIGN,
+-              .model_id = MODEL_DIGI00X,
++              .model_id = MODEL_CONSOLE,
++      },
++      {
++              .match_flags = IEEE1394_MATCH_VENDOR_ID |
++                             IEEE1394_MATCH_MODEL_ID,
++              .vendor_id = VENDOR_DIGIDESIGN,
++              .model_id = MODEL_RACK,
+       },
+       {}
+ };
+diff --git a/sound/firewire/digi00x/digi00x.h b/sound/firewire/digi00x/digi00x.h
+index 907e739936777..d641a0cf077a3 100644
+--- a/sound/firewire/digi00x/digi00x.h
++++ b/sound/firewire/digi00x/digi00x.h
+@@ -57,6 +57,7 @@ struct snd_dg00x {
+       /* For asynchronous MIDI controls. */
+       struct snd_rawmidi_substream *in_control;
+       struct snd_fw_async_midi_port out_control;
++      bool is_console;
+ };
+ #define DG00X_ADDR_BASE               0xffffe0000000ull
+-- 
+2.25.1
+
diff --git a/queue-4.4/alsa-firewire-digi00x-exclude-avid-adrenaline-from-d.patch b/queue-4.4/alsa-firewire-digi00x-exclude-avid-adrenaline-from-d.patch
new file mode 100644 (file)
index 0000000..fd12bc8
--- /dev/null
@@ -0,0 +1,113 @@
+From a2f667fa6f8cd486dd0b3af18ee0e095f248650f Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Sun, 23 Aug 2020 16:55:45 +0900
+Subject: ALSA: firewire-digi00x: exclude Avid Adrenaline from detection
+
+From: Takashi Sakamoto <o-takashi@sakamocchi.jp>
+
+[ Upstream commit acd46a6b6de88569654567810acad2b0a0a25cea ]
+
+Avid Adrenaline is reported that ALSA firewire-digi00x driver is bound to.
+However, as long as he investigated, the design of this model is hardly
+similar to the one of Digi 00x family. It's better to exclude the model
+from modalias of ALSA firewire-digi00x driver.
+
+This commit changes device entries so that the model is excluded.
+
+$ python3 crpp < ~/git/am-config-rom/misc/avid-adrenaline.img
+               ROM header and bus information block
+               -----------------------------------------------------------------
+400  04203a9c  bus_info_length 4, crc_length 32, crc 15004
+404  31333934  bus_name "1394"
+408  e064a002  irmc 1, cmc 1, isc 1, bmc 0, cyc_clk_acc 100, max_rec 10 (2048)
+40c  00a07e01  company_id 00a07e     |
+410  00085257  device_id 0100085257  | EUI-64 00a07e0100085257
+
+               root directory
+               -----------------------------------------------------------------
+414  0005d08c  directory_length 5, crc 53388
+418  0300a07e  vendor
+41c  8100000c  --> descriptor leaf at 44c
+420  0c008380  node capabilities
+424  8d000002  --> eui-64 leaf at 42c
+428  d1000004  --> unit directory at 438
+
+               eui-64 leaf at 42c
+               -----------------------------------------------------------------
+42c  0002410f  leaf_length 2, crc 16655
+430  00a07e01  company_id 00a07e     |
+434  00085257  device_id 0100085257  | EUI-64 00a07e0100085257
+
+               unit directory at 438
+               -----------------------------------------------------------------
+438  0004d6c9  directory_length 4, crc 54985
+43c  1200a02d  specifier id: 1394 TA
+440  13014001  version: Vender Unique and AV/C
+444  17000001  model
+448  81000009  --> descriptor leaf at 46c
+
+               descriptor leaf at 44c
+               -----------------------------------------------------------------
+44c  00077205  leaf_length 7, crc 29189
+450  00000000  textual descriptor
+454  00000000  minimal ASCII
+458  41766964  "Avid"
+45c  20546563  " Tec"
+460  686e6f6c  "hnol"
+464  6f677900  "ogy"
+468  00000000
+
+               descriptor leaf at 46c
+               -----------------------------------------------------------------
+46c  000599a5  leaf_length 5, crc 39333
+470  00000000  textual descriptor
+474  00000000  minimal ASCII
+478  41647265  "Adre"
+47c  6e616c69  "nali"
+480  6e650000  "ne"
+
+Reported-by: Simon Wood <simon@mungewell.org>
+Fixes: 9edf723fd858 ("ALSA: firewire-digi00x: add skeleton for Digi 002/003 family")
+Cc: <stable@vger.kernel.org> # 4.4+
+Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
+Link: https://lore.kernel.org/r/20200823075545.56305-1-o-takashi@sakamocchi.jp
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ sound/firewire/digi00x/digi00x.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/sound/firewire/digi00x/digi00x.c b/sound/firewire/digi00x/digi00x.c
+index 6973a7ff1c503..659e8224a4dee 100644
+--- a/sound/firewire/digi00x/digi00x.c
++++ b/sound/firewire/digi00x/digi00x.c
+@@ -15,6 +15,7 @@ MODULE_LICENSE("GPL v2");
+ #define VENDOR_DIGIDESIGN     0x00a07e
+ #define MODEL_CONSOLE         0x000001
+ #define MODEL_RACK            0x000002
++#define SPEC_VERSION          0x000001
+ static int name_card(struct snd_dg00x *dg00x)
+ {
+@@ -139,14 +140,18 @@ static const struct ieee1394_device_id snd_dg00x_id_table[] = {
+       /* Both of 002/003 use the same ID. */
+       {
+               .match_flags = IEEE1394_MATCH_VENDOR_ID |
++                             IEEE1394_MATCH_VERSION |
+                              IEEE1394_MATCH_MODEL_ID,
+               .vendor_id = VENDOR_DIGIDESIGN,
++              .version = SPEC_VERSION,
+               .model_id = MODEL_CONSOLE,
+       },
+       {
+               .match_flags = IEEE1394_MATCH_VENDOR_ID |
++                             IEEE1394_MATCH_VERSION |
+                              IEEE1394_MATCH_MODEL_ID,
+               .vendor_id = VENDOR_DIGIDESIGN,
++              .version = SPEC_VERSION,
+               .model_id = MODEL_RACK,
+       },
+       {}
+-- 
+2.25.1
+
diff --git a/queue-4.4/alsa-firewire-tascam-exclude-tascam-fe-8-from-detect.patch b/queue-4.4/alsa-firewire-tascam-exclude-tascam-fe-8-from-detect.patch
new file mode 100644 (file)
index 0000000..e7860ad
--- /dev/null
@@ -0,0 +1,76 @@
+From 9802d252e8e62c3c773d99d728b6bf28ff9f31b3 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Sun, 23 Aug 2020 16:55:37 +0900
+Subject: ALSA; firewire-tascam: exclude Tascam FE-8 from detection
+
+From: Takashi Sakamoto <o-takashi@sakamocchi.jp>
+
+Tascam FE-8 is known to support communication by asynchronous transaction
+only. The support can be implemented in userspace application and
+snd-firewire-ctl-services project has the support. However, ALSA
+firewire-tascam driver is bound to the model.
+
+This commit changes device entries so that the model is excluded. In a
+commit 53b3ffee7885 ("ALSA: firewire-tascam: change device probing
+processing"), I addressed to the concern that version field in
+configuration differs depending on installed firmware. However, as long
+as I checked, the version number is fixed. It's safe to return version
+number back to modalias.
+
+Fixes: 53b3ffee7885 ("ALSA: firewire-tascam: change device probing processing")
+Cc: <stable@vger.kernel.org> # 4.4+
+Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
+Link: https://lore.kernel.org/r/20200823075537.56255-1-o-takashi@sakamocchi.jp
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+---
+ sound/firewire/tascam/tascam.c | 30 +++++++++++++++++++++++++++++-
+ 1 file changed, 29 insertions(+), 1 deletion(-)
+
+diff --git a/sound/firewire/tascam/tascam.c b/sound/firewire/tascam/tascam.c
+index ee0bc18395088..a4143f45c7f7a 100644
+--- a/sound/firewire/tascam/tascam.c
++++ b/sound/firewire/tascam/tascam.c
+@@ -172,11 +172,39 @@ static void snd_tscm_remove(struct fw_unit *unit)
+ }
+ static const struct ieee1394_device_id snd_tscm_id_table[] = {
++      // Tascam, FW-1884.
+       {
+               .match_flags = IEEE1394_MATCH_VENDOR_ID |
+-                             IEEE1394_MATCH_SPECIFIER_ID,
++                             IEEE1394_MATCH_SPECIFIER_ID |
++                             IEEE1394_MATCH_VERSION,
+               .vendor_id = 0x00022e,
+               .specifier_id = 0x00022e,
++              .version = 0x800000,
++      },
++      // Tascam, FE-8 (.version = 0x800001)
++      // This kernel module doesn't support FE-8 because the most of features
++      // can be implemented in userspace without any specific support of this
++      // module.
++      //
++      // .version = 0x800002 is unknown.
++      //
++      // Tascam, FW-1082.
++      {
++              .match_flags = IEEE1394_MATCH_VENDOR_ID |
++                             IEEE1394_MATCH_SPECIFIER_ID |
++                             IEEE1394_MATCH_VERSION,
++              .vendor_id = 0x00022e,
++              .specifier_id = 0x00022e,
++              .version = 0x800003,
++      },
++      // Tascam, FW-1804.
++      {
++              .match_flags = IEEE1394_MATCH_VENDOR_ID |
++                             IEEE1394_MATCH_SPECIFIER_ID |
++                             IEEE1394_MATCH_VERSION,
++              .vendor_id = 0x00022e,
++              .specifier_id = 0x00022e,
++              .version = 0x800004,
+       },
+       /* FE-08 requires reverse-engineering because it just has faders. */
+       {}
+-- 
+2.25.1
+
diff --git a/queue-4.4/fs-affs-use-octal-for-permissions.patch b/queue-4.4/fs-affs-use-octal-for-permissions.patch
new file mode 100644 (file)
index 0000000..a38d81a
--- /dev/null
@@ -0,0 +1,95 @@
+From c3e2a24ff19f47b6d5905cc342ce23fd32a28b4b Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 27 Feb 2017 14:27:52 -0800
+Subject: fs/affs: use octal for permissions
+
+From: Fabian Frederick <fabf@skynet.be>
+
+[ Upstream commit 1bafd6f164d9ec9bf2fa9829051fbeb36342be0b ]
+
+According to commit f90774e1fd27 ("checkpatch: look for symbolic
+permissions and suggest octal instead")
+
+Link: http://lkml.kernel.org/r/20170109191208.6085-5-fabf@skynet.be
+Signed-off-by: Fabian Frederick <fabf@skynet.be>
+Cc: Al Viro <viro@zeniv.linux.org.uk>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ fs/affs/amigaffs.c | 36 ++++++++++++++++++------------------
+ 1 file changed, 18 insertions(+), 18 deletions(-)
+
+diff --git a/fs/affs/amigaffs.c b/fs/affs/amigaffs.c
+index 5fa92bc790ef7..a148c7ecb35d3 100644
+--- a/fs/affs/amigaffs.c
++++ b/fs/affs/amigaffs.c
+@@ -390,23 +390,23 @@ prot_to_mode(u32 prot)
+       umode_t mode = 0;
+       if (!(prot & FIBF_NOWRITE))
+-              mode |= S_IWUSR;
++              mode |= 0200;
+       if (!(prot & FIBF_NOREAD))
+-              mode |= S_IRUSR;
++              mode |= 0400;
+       if (!(prot & FIBF_NOEXECUTE))
+-              mode |= S_IXUSR;
++              mode |= 0100;
+       if (prot & FIBF_GRP_WRITE)
+-              mode |= S_IWGRP;
++              mode |= 0020;
+       if (prot & FIBF_GRP_READ)
+-              mode |= S_IRGRP;
++              mode |= 0040;
+       if (prot & FIBF_GRP_EXECUTE)
+-              mode |= S_IXGRP;
++              mode |= 0010;
+       if (prot & FIBF_OTR_WRITE)
+-              mode |= S_IWOTH;
++              mode |= 0002;
+       if (prot & FIBF_OTR_READ)
+-              mode |= S_IROTH;
++              mode |= 0004;
+       if (prot & FIBF_OTR_EXECUTE)
+-              mode |= S_IXOTH;
++              mode |= 0001;
+       return mode;
+ }
+@@ -417,23 +417,23 @@ mode_to_prot(struct inode *inode)
+       u32 prot = AFFS_I(inode)->i_protect;
+       umode_t mode = inode->i_mode;
+-      if (!(mode & S_IXUSR))
++      if (!(mode & 0100))
+               prot |= FIBF_NOEXECUTE;
+-      if (!(mode & S_IRUSR))
++      if (!(mode & 0400))
+               prot |= FIBF_NOREAD;
+-      if (!(mode & S_IWUSR))
++      if (!(mode & 0200))
+               prot |= FIBF_NOWRITE;
+-      if (mode & S_IXGRP)
++      if (mode & 0010)
+               prot |= FIBF_GRP_EXECUTE;
+-      if (mode & S_IRGRP)
++      if (mode & 0040)
+               prot |= FIBF_GRP_READ;
+-      if (mode & S_IWGRP)
++      if (mode & 0020)
+               prot |= FIBF_GRP_WRITE;
+-      if (mode & S_IXOTH)
++      if (mode & 0001)
+               prot |= FIBF_OTR_EXECUTE;
+-      if (mode & S_IROTH)
++      if (mode & 0004)
+               prot |= FIBF_OTR_READ;
+-      if (mode & S_IWOTH)
++      if (mode & 0002)
+               prot |= FIBF_OTR_WRITE;
+       AFFS_I(inode)->i_protect = prot;
+-- 
+2.25.1
+
index b0ef38d194c87d9f7f6bfe061b18ea2b6fa5c0bd..51ad6f3e41e46fe3bfae185dde5e2e55a929ad11 100644 (file)
@@ -48,3 +48,8 @@ checkpatch-fix-the-usage-of-capture-group.patch
 mm-hugetlb-fix-a-race-between-hugetlb-sysctl-handlers.patch
 cfg80211-regulatory-reject-invalid-hints.patch
 net-usb-fix-uninit-was-stored-issue-in-asix_read_phy_addr.patch
+alsa-firewire-digi00x-add-support-for-console-models.patch
+alsa-firewire-digi00x-exclude-avid-adrenaline-from-d.patch
+alsa-firewire-tascam-exclude-tascam-fe-8-from-detect.patch
+fs-affs-use-octal-for-permissions.patch
+affs-fix-basic-permission-bits-to-actually-work.patch