1. Oct 29, 2023
    • Kees Cook's avatar
      seq_buf: Introduce DECLARE_SEQ_BUF and seq_buf_str() · dcc4e572
      Kees Cook authored
      Solve two ergonomic issues with struct seq_buf;
      
      1) Too much boilerplate is required to initialize:
      
      	struct seq_buf s;
      	char buf[32];
      
      	seq_buf_init(s, buf, sizeof(buf));
      
      Instead, we can build this directly on the stack. Provide
      DECLARE_SEQ_BUF() macro to do this:
      
      	DECLARE_SEQ_BUF(s, 32);
      
      2) %NUL termination is fragile and requires 2 steps to get a valid
         C String (and is a layering violation exposing the "internals" of
         seq_buf):
      
      	seq_buf_terminate(s);
      	do_something(s->buffer);
      
      Instead, we can just return s->buffer directly after terminating it in
      the refactored seq_buf_terminate(), now known as seq_buf_str():
      
      	do_something(seq_buf_str(s));
      
      Link: https://lore.kernel.org/linux-trace-kernel/20231027155634.make.260-kees@kernel.org
      Link: https://lore.kernel.org/linux-trace-kernel/20231026194033.it.702-kees@kernel.org/
      
      
      
      Cc: Yosry Ahmed <yosryahmed@google.com>
      Cc: "Matthew Wilcox (Oracle)" <willy@infradead.org>
      Cc: Christoph Hellwig <hch@lst.de>
      Cc: Justin Stitt <justinstitt@google.com>
      Cc: Kent Overstreet <kent.overstreet@linux.dev>
      Cc: Petr Mladek <pmladek@suse.com>
      Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
      Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk>
      Cc: Sergey Senozhatsky <senozhatsky@chromium.org>
      Cc: Masami Hiramatsu <mhiramat@kernel.org>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Jonathan Corbet <corbet@lwn.net>
      Cc: Yun Zhou <yun.zhou@windriver.com>
      Cc: Jacob Keller <jacob.e.keller@intel.com>
      Cc: Zhen Lei <thunder.leizhen@huawei.com>
      Signed-off-by: default avatarKees Cook <keescook@chromium.org>
      Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
      dcc4e572
  2. Oct 26, 2023
  3. Oct 24, 2023
  4. Oct 21, 2023
  5. Oct 20, 2023
  6. Oct 19, 2023
  7. Oct 05, 2023
    • Steven Rostedt (Google)'s avatar
      tracing: Make system_callback() function static · 5ddd8baa
      Steven Rostedt (Google) authored
      The system_callback() function in trace_events.c is only used within that
      file. The "static" annotation was missed.
      
      Fixes: 5790b1fb
      
       ("eventfs: Remove eventfs_file and just use eventfs_inode")
      Reported-by: default avatarkernel test robot <lkp@intel.com>
      Closes: https://lore.kernel.org/oe-kbuild-all/202310051743.y9EobbUr-lkp@intel.com/
      
      
      Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
      5ddd8baa
    • Steven Rostedt (Google)'s avatar
      eventfs: Use eventfs_remove_events_dir() · 2819f23a
      Steven Rostedt (Google) authored
      The update to removing the eventfs_file changed the way the events top
      level directory was handled. Instead of returning a dentry, it now returns
      the eventfs_inode. In this changed, the removing of the events top level
      directory is not much different than removing any of the other
      directories. Because of this, the removal just called eventfs_remove_dir()
      instead of eventfs_remove_events_dir().
      
      Although eventfs_remove_dir() does the clean up, it misses out on the
      dget() of the ei->dentry done in eventfs_create_events_dir(). It makes
      more sense to match eventfs_create_events_dir() with a specific function
      eventfs_remove_events_dir() and this specific function can then perform
      the dput() to the dentry that had the dget() when it was created.
      
      Fixes: 5790b1fb
      
       ("eventfs: Remove eventfs_file and just use eventfs_inode")
      Reported-by: default avatarkernel test robot <lkp@intel.com>
      Closes: https://lore.kernel.org/oe-kbuild-all/202310051743.y9EobbUr-lkp@intel.com/
      
      
      Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
      2819f23a
    • Steven Rostedt (Google)'s avatar
      tracing/selftests: Update kprobe args char/string to match new functions · f5d9e8e0
      Steven Rostedt (Google) authored
      The function that the kprobe_args_char and kprobes_arg_string attaches to
      for its test has changed its name once again. Now we need to check for
      eventfs_create_dir(), and if it exists, use that, otherwise check for
      eventfs_add_dir() and if that exists use that, otherwise use the original
      tracefs_create_dir()!
      
      Link: https://lore.kernel.org/linux-trace-kernel/20230914163535.487267410@goodmis.org
      
      
      
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Ajay Kaher <akaher@vmware.com>
      Acked-by: default avatarMasami Hiramatsu (Google) <mhiramat@kernel.org>
      Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
      f5d9e8e0
    • Steven Rostedt (Google)'s avatar
      eventfs: Remove eventfs_file and just use eventfs_inode · 5790b1fb
      Steven Rostedt (Google) authored
      Instead of having a descriptor for every file represented in the eventfs
      directory, only have the directory itself represented. Change the API to
      send in a list of entries that represent all the files in the directory
      (but not other directories). The entry list contains a name and a callback
      function that will be used to create the files when they are accessed.
      
      struct eventfs_inode *eventfs_create_events_dir(const char *name, struct dentry *parent,
      						const struct eventfs_entry *entries,
      						int size, void *data);
      
      is used for the top level eventfs directory, and returns an eventfs_inode
      that will be used by:
      
      struct eventfs_inode *eventfs_create_dir(const char *name, struct eventfs_inode *parent,
      					 const struct eventfs_entry *entries,
      					 int size, void *data);
      
      where both of the above take an array of struct eventfs_entry entries for
      every file that is in the directory.
      
      The entries are defined by:
      
      typedef int (*eventfs_callback)(const char *name, umode_t *mode, void **data,
      				const struct file_operations **fops);
      
      struct eventfs_entry {
      	const char			*name;
      	eventfs_callback		callback;
      };
      
      Where the name is the name of the file and the callback gets called when
      the file is being created. The callback passes in the name (in case the
      same callback is used for multiple files), a pointer to the mode, data and
      fops. The data will be pointing to the data that was passed in
      eventfs_create_dir() or eventfs_create_events_dir() but may be overridden
      to point to something else, as it will be used to point to the
      inode->i_private that is created. The information passed back from the
      callback is used to create the dentry/inode.
      
      If the callback fills the data and the file should be created, it must
      return a positive number. On zero or negative, the file is ignored.
      
      This logic may also be used as a prototype to convert entire pseudo file
      systems into just-in-time allocation.
      
      The "show_events_dentry" file has been updated to show the directories,
      and any files they have.
      
      With just the eventfs_file allocations:
      
       Before after deltas for meminfo (in kB):
      
         MemFree:		-14360
         MemAvailable:	-14260
         Buffers:		40
         Cached:		24
         Active:		44
         Inactive:		48
         Inactive(anon):	28
         Active(file):	44
         Inactive(file):	20
         Dirty:		-4
         AnonPages:		28
         Mapped:		4
         KReclaimable:	132
         Slab:		1604
         SReclaimable:	132
         SUnreclaim:		1472
         Committed_AS:	12
      
       Before after deltas for slabinfo:
      
         <slab>:		<objects>	[ * <size> = <total>]
      
         ext4_inode_cache	27		[* 1184 = 31968 ]
         extent_status	102		[*   40 = 4080 ]
         tracefs_inode_cache	144		[*  656 = 94464 ]
         buffer_head		39		[*  104 = 4056 ]
         shmem_inode_cache	49		[*  800 = 39200 ]
         filp			-53		[*  256 = -13568 ]
         dentry		251		[*  192 = 48192 ]
         lsm_file_cache	277		[*   32 = 8864 ]
         vm_area_struct	-14		[*  184 = -2576 ]
         trace_event_file	1748		[*   88 = 153824 ]
         kmalloc-1k		35		[* 1024 = 35840 ]
         kmalloc-256		49		[*  256 = 12544 ]
         kmalloc-192		-28		[*  192 = -5376 ]
         kmalloc-128		-30		[*  128 = -3840 ]
         kmalloc-96		10581		[*   96 = 1015776 ]
         kmalloc-64		3056		[*   64 = 195584 ]
         kmalloc-32		1291		[*   32 = 41312 ]
         kmalloc-16		2310		[*   16 = 36960 ]
         kmalloc-8		9216		[*    8 = 73728 ]
      
       Free memory dropped by 14,360 kB
       Available memory dropped by 14,260 kB
       Total slab additions in size: 1,771,032 bytes
      
      With this change:
      
       Before after deltas for meminfo (in kB):
      
         MemFree:		-12084
         MemAvailable:	-11976
         Buffers:		32
         Cached:		32
         Active:		72
         Inactive:		168
         Inactive(anon):	176
         Active(file):	72
         Inactive(file):	-8
         Dirty:		24
         AnonPages:		196
         Mapped:		8
         KReclaimable:	148
         Slab:		836
         SReclaimable:	148
         SUnreclaim:		688
         Committed_AS:	324
      
       Before after deltas for slabinfo:
      
         <slab>:		<objects>	[ * <size> = <total>]
      
         tracefs_inode_cache	144		[* 656 = 94464 ]
         shmem_inode_cache	-23		[* 800 = -18400 ]
         filp			-92		[* 256 = -23552 ]
         dentry		179		[* 192 = 34368 ]
         lsm_file_cache	-3		[* 32 = -96 ]
         vm_area_struct	-13		[* 184 = -2392 ]
         trace_event_file	1748		[* 88 = 153824 ]
         kmalloc-1k		-49		[* 1024 = -50176 ]
         kmalloc-256		-27		[* 256 = -6912 ]
         kmalloc-128		1864		[* 128 = 238592 ]
         kmalloc-64		4685		[* 64 = 299840 ]
         kmalloc-32		-72		[* 32 = -2304 ]
         kmalloc-16		256		[* 16 = 4096 ]
         total = 721352
      
       Free memory dropped by 12,084 kB
       Available memory dropped by 11,976 kB
       Total slab additions in size:  721,352 bytes
      
      That's over 2 MB in savings per instance for free and available memory,
      and over 1 MB in savings per instance of slab memory.
      
      Link: https://lore.kernel.org/linux-trace-kernel/20231003184059.4924468e@gandalf.local.home
      Link: https://lore.kernel.org/linux-trace-kernel/20231004165007.43d79161@gandalf.local.home
      
      
      
      Cc: Masami Hiramatsu <mhiramat@kernel.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Ajay Kaher <akaher@vmware.com>
      Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
      5790b1fb
  8. Oct 04, 2023
  9. Oct 02, 2023
  10. Oct 01, 2023
    • Masahiro Yamada's avatar
      kbuild: remove stale code for 'source' symlink in packaging scripts · 2d7d1bc1
      Masahiro Yamada authored
      Since commit d8131c29
      
       ("kbuild: remove $(MODLIB)/source symlink"),
      modules_install does not create the 'source' symlink.
      
      Remove the stale code from builddeb and kernel.spec.
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      2d7d1bc1
    • Uwe Kleine-König's avatar
      modpost: Don't let "driver"s reference .exit.* · f177cd0c
      Uwe Kleine-König authored
      Drivers must not reference functions marked with __exit as these likely
      are not available when the code is built-in.
      
      There are few creative offenders uncovered for example in ARCH=amd64
      allmodconfig builds. So only trigger the section mismatch warning for
      W=1 builds.
      
      The dual rule that drivers must not reference .init.* is implemented
      since commit 0db25245
      
       ("modpost: don't allow *driver to reference
      .init.*") which however missed that .exit.* should be handled in the
      same way.
      
      Thanks to Masahiro Yamada and Arnd Bergmann who gave valuable hints to
      find this improvement.
      
      Signed-off-by: default avatarUwe Kleine-König <u.kleine-koenig@pengutronix.de>
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      f177cd0c
    • Masahiro Yamada's avatar
      vmlinux.lds.h: remove unused CPU_KEEP and CPU_DISCARD macros · 15e86643
      Masahiro Yamada authored
      Remove the left-over of commit e24f6628
      
       ("modpost: remove all
      traces of cpuinit/cpuexit sections").
      
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Acked-by: default avatarPaul Gortmaker <paul.gortmaker@windriver.com>
      15e86643
    • Mauricio Faria de Oliveira's avatar
      modpost: add missing else to the "of" check · cbc3d00c
      Mauricio Faria de Oliveira authored
      Without this 'else' statement, an "usb" name goes into two handlers:
      the first/previous 'if' statement _AND_ the for-loop over 'devtable',
      but the latter is useless as it has no 'usb' device_id entry anyway.
      
      Tested with allmodconfig before/after patch; no changes to *.mod.c:
      
          git checkout v6.6-rc3
          make -j$(nproc) allmodconfig
          make -j$(nproc) olddefconfig
      
          make -j$(nproc)
          find . -name '*.mod.c' | cpio -pd /tmp/before
      
          # apply patch
      
          make -j$(nproc)
          find . -name '*.mod.c' | cpio -pd /tmp/after
      
          diff -r /tmp/before/ /tmp/after/
          # no difference
      
      Fixes: acbef7b7
      
       ("modpost: fix module autoloading for OF devices with generic compatible property")
      Signed-off-by: default avatarMauricio Faria de Oliveira <mfo@canonical.com>
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      cbc3d00c
    • Linus Torvalds's avatar
      Merge tag 'soc-fixes-6.6' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc · e402b086
      Linus Torvalds authored
      Pull ARM SoC fixes from Arnd Bergmann:
       "These are the latest bug fixes that have come up in the soc tree. Most
        of these are fairly minor. Most notably, the majority of changes this
        time are not for dts files as usual.
      
         - Updates to the addresses of the broadcom and aspeed entries in the
           MAINTAINERS file.
      
         - Defconfig updates to address a regression on samsung and a build
           warning from an unknown Kconfig symbol
      
         - Build fixes for the StrongARM and Uniphier platforms
      
         - Code fixes for SCMI and FF-A firmware drivers, both of which had a
           simple bug that resulted in invalid data, and a lesser fix for the
           optee firmware driver
      
         - Multiple fixes for the recently added loongson/loongarch "guts" soc
           driver
      
         - Devicetree fixes for RISC-V on the startfive platform, addressing
           issues with NOR flash, usb and uart.
      
         - Multiple fixes for NXP i.MX8/i.MX9 dts files, fixing problems with
           clock, gpio, hdmi settings and the Makefile
      
         - Bug fixes for i.MX firmware code and the OCOTP soc driver
      
         - Multiple fixes for the TI sysc bus driver
      
         - Minor dts updates for TI omap dts files, to address boot time
           warnings and errors"
      
      * tag 'soc-fixes-6.6' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (35 commits)
        MAINTAINERS: Fix Florian Fainelli's email address
        arm64: defconfig: enable syscon-poweroff driver
        ARM: locomo: fix locomolcd_power declaration
        soc: loongson: loongson2_guts: Remove unneeded semicolon
        soc: loongson: loongson2_guts: Convert to devm_platform_ioremap_resource()
        soc: loongson: loongson_pm2: Populate children syscon nodes
        dt-bindings: soc: loongson,ls2k-pmc: Allow syscon-reboot/syscon-poweroff as child
        soc: loongson: loongson_pm2: Drop useless of_device_id compatible
        dt-bindings: soc: loongson,ls2k-pmc: Use fallbacks for ls2k-pmc compatible
        soc: loongson: loongson_pm2: Add dependency for INPUT
        arm64: defconfig: remove CONFIG_COMMON_CLK_NPCM8XX=y
        ARM: uniphier: fix cache kernel-doc warnings
        MAINTAINERS: aspeed: Update Andrew's email address
        MAINTAINERS: aspeed: Update git tree URL
        firmware: arm_ffa: Don't set the memory region attributes for MEM_LEND
        arm64: dts: imx: Add imx8mm-prt8mm.dtb to build
        arm64: dts: imx8mm-evk: Fix hdmi@3d node
        soc: imx8m: Enable OCOTP clock for imx8mm before reading registers
        arm64: dts: imx8mp-beacon-kit: Fix audio_pll2 clock
        arm64: dts: imx8mp: Fix SDMA2/3 clocks
        ...
      e402b086
    • Linus Torvalds's avatar
      Merge tag 'trace-v6.6-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace · 3b347e40
      Linus Torvalds authored
      Pull tracing fixes from Steven Rostedt:
      
       - Make sure 32-bit applications using user events have aligned access
         when running on a 64-bit kernel.
      
       - Add cond_resched in the loop that handles converting enums in
         print_fmt string is trace events.
      
       - Fix premature wake ups of polling processes in the tracing ring
         buffer. When a task polls waiting for a percentage of the ring buffer
         to be filled, the writer still will wake it up at every event. Add
         the polling's percentage to the "shortest_full" list to tell the
         writer when to wake it up.
      
       - For eventfs dir lookups on dynamic events, an event system's only
         event could be removed, leaving its dentry with no children. This is
         totally legitimate. But in eventfs_release() it must not access the
         children array, as it is only allocated when the dentry has children.
      
      * tag 'trace-v6.6-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace:
        eventfs: Test for dentries array allocated in eventfs_release()
        tracing/user_events: Align set_bit() address for all archs
        tracing: relax trace_event_eval_update() execution with cond_resched()
        ring-buffer: Update "shortest_full" in polling
      3b347e40
    • Steven Rostedt (Google)'s avatar
      eventfs: Test for dentries array allocated in eventfs_release() · 2598bd3c
      Steven Rostedt (Google) authored
      The dcache_dir_open_wrapper() could be called when a dynamic event is
      being deleted leaving a dentry with no children. In this case the
      dlist->dentries array will never be allocated. This needs to be checked
      for in eventfs_release(), otherwise it will trigger a NULL pointer
      dereference.
      
      Link: https://lore.kernel.org/linux-trace-kernel/20230930090106.1c3164e9@rorschach.local.home
      
      
      
      Cc: Mark Rutland <mark.rutland@arm.com>
      Acked-by: default avatarMasami Hiramatsu (Google) <mhiramat@kernel.org>
      Fixes: ef36b4f9
      
       ("eventfs: Remember what dentries were created on dir open")
      Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
      2598bd3c
    • Beau Belgrave's avatar
      tracing/user_events: Align set_bit() address for all archs · 2de9ee94
      Beau Belgrave authored
      All architectures should use a long aligned address passed to set_bit().
      User processes can pass either a 32-bit or 64-bit sized value to be
      updated when tracing is enabled when on a 64-bit kernel. Both cases are
      ensured to be naturally aligned, however, that is not enough. The
      address must be long aligned without affecting checks on the value
      within the user process which require different adjustments for the bit
      for little and big endian CPUs.
      
      Add a compat flag to user_event_enabler that indicates when a 32-bit
      value is being used on a 64-bit kernel. Long align addresses and correct
      the bit to be used by set_bit() to account for this alignment. Ensure
      compat flags are copied during forks and used during deletion clears.
      
      Link: https://lore.kernel.org/linux-trace-kernel/20230925230829.341-2-beaub@linux.microsoft.com
      Link: https://lore.kernel.org/linux-trace-kernel/20230914131102.179100-1-cleger@rivosinc.com/
      
      Cc: stable@vger.kernel.org
      Fixes: 72357590
      
       ("tracing/user_events: Use remote writes for event enablement")
      Reported-by: default avatarClément Léger <cleger@rivosinc.com>
      Suggested-by: default avatarClément Léger <cleger@rivosinc.com>
      Signed-off-by: default avatarBeau Belgrave <beaub@linux.microsoft.com>
      Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
      2de9ee94
    • Clément Léger's avatar
      tracing: relax trace_event_eval_update() execution with cond_resched() · 23cce5f2
      Clément Léger authored
      When kernel is compiled without preemption, the eval_map_work_func()
      (which calls trace_event_eval_update()) will not be preempted up to its
      complete execution. This can actually cause a problem since if another
      CPU call stop_machine(), the call will have to wait for the
      eval_map_work_func() function to finish executing in the workqueue
      before being able to be scheduled. This problem was observe on a SMP
      system at boot time, when the CPU calling the initcalls executed
      clocksource_done_booting() which in the end calls stop_machine(). We
      observed a 1 second delay because one CPU was executing
      eval_map_work_func() and was not preempted by the stop_machine() task.
      
      Adding a call to cond_resched() in trace_event_eval_update() allows
      other tasks to be executed and thus continue working asynchronously
      like before without blocking any pending task at boot time.
      
      Link: https://lore.kernel.org/linux-trace-kernel/20230929191637.416931-1-cleger@rivosinc.com
      
      
      
      Cc: Masami Hiramatsu <mhiramat@kernel.org>
      Signed-off-by: default avatarClément Léger <cleger@rivosinc.com>
      Tested-by: default avatarAtish Patra <atishp@rivosinc.com>
      Reviewed-by: default avatarAtish Patra <atishp@rivosinc.com>
      Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
      23cce5f2
    • Steven Rostedt (Google)'s avatar
      ring-buffer: Update "shortest_full" in polling · 1e0cb399
      Steven Rostedt (Google) authored
      It was discovered that the ring buffer polling was incorrectly stating
      that read would not block, but that's because polling did not take into
      account that reads will block if the "buffer-percent" was set. Instead,
      the ring buffer polling would say reads would not block if there was any
      data in the ring buffer. This was incorrect behavior from a user space
      point of view. This was fixed by commit 42fb0a1e by having the polling
      code check if the ring buffer had more data than what the user specified
      "buffer percent" had.
      
      The problem now is that the polling code did not register itself to the
      writer that it wanted to wait for a specific "full" value of the ring
      buffer. The result was that the writer would wake the polling waiter
      whenever there was a new event. The polling waiter would then wake up, see
      that there's not enough data in the ring buffer to notify user space and
      then go back to sleep. The next event would wake it up again.
      
      Before the polling fix was added, the code would wake up around 100 times
      for a hackbench 30 benchmark. After the "fix", due to the constant waking
      of the writer, it would wake up over 11,0000 times! It would never leave
      the kernel, so the user space behavior was still "correct", but this
      definitely is not the desired effect.
      
      To fix this, have the polling code add what it's waiting for to the
      "shortest_full" variable, to tell the writer not to wake it up if the
      buffer is not as full as it expects to be.
      
      Note, after this fix, it appears that the waiter is now woken up around 2x
      the times it was before (~200). This is a tremendous improvement from the
      11,000 times, but I will need to spend some time to see why polling is
      more aggressive in its wakeups than the read blocking code.
      
      Link: https://lore.kernel.org/linux-trace-kernel/20230929180113.01c2cae3@rorschach.local.home
      
      Cc: stable@vger.kernel.org
      Cc: Masami Hiramatsu <mhiramat@kernel.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Fixes: 42fb0a1e
      
       ("tracing/ring-buffer: Have polling block on watermark")
      Reported-by: default avatarJulia Lawall <julia.lawall@inria.fr>
      Tested-by: default avatarJulia Lawall <julia.lawall@inria.fr>
      Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
      1e0cb399
    • Linus Torvalds's avatar
      Merge tag 'dma-mapping-6.6-2023-09-30' of git://git.infradead.org/users/hch/dma-mapping · 3b517966
      Linus Torvalds authored
      Pull dma-mapping fixes from Christoph Hellwig:
      
       - fix the narea calculation in swiotlb initialization (Ross Lagerwall)
      
       - fix the check whether a device has used swiotlb (Petr Tesarik)
      
      * tag 'dma-mapping-6.6-2023-09-30' of git://git.infradead.org/users/hch/dma-mapping:
        swiotlb: fix the check whether a device has used software IO TLB
        swiotlb: use the calculated number of areas
      3b517966