Commit 330517c63aa9 for kernel

commit 330517c63aa9b48227b6ab45f01003effac77ae4
Merge: 168151cdb0f9 985955d8e6b2
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Sat Oct 24 15:44:26 2026 -1000

    Merge tag 'char-misc-7.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc

    Pull Char/Misc/IIO/others driver updates from Greg KH:
     "Here is the big set of char/misc/android/iio and other small driver
      subsystem patches for 7.4-rc1. Loads of stuff in here, larger than
      normal. Highlights include:

       - removal of the C binder code, the rust version is stable and will
         be used going forward in a few billion devices. Great job by those
         developers

       - loads and loads of IIO driver updates and feature additions

       - speakup driver fixes and updates

       - mhi driver updates

       - mei driver updates

       - xillybus driver fixes

       - comedi driver fixes

       - lots of coresight driver updates

       - Interconnect driver updates

       - nvmem driver updates and fixes

       - slimbus driver updates and fixes

       - spmi driver updates and fixes

       - lots of tiny misc and char driver fixes based on people scanning
         for things

      All of these have been in linux-next for a while with no reported
      issues, other than a merge conflict with one of the rust tree files,
      which should be simple to resolve"

    * tag 'char-misc-7.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: (446 commits)
      rust_binder: wake epoll on self-work queued to poll thread
      rust_binder: avoid overflow in get_node_debug_info()
      MAINTAINERS: Add Abel as SPMI co-maintainer
      spmi: mtk-pmif: Fix clock reference leak in mtk_spmi_bus_probe()
      iio: adc: qcom-spmi-iadc: Remove regmap R/W wrapper functions
      iio: adc: qcom-spmi-iadc: Migrate to devm_spmi_subdevice_alloc_and_add()
      misc: qcom-coincell: Migrate to devm_spmi_subdevice_alloc_and_add()
      phy: qualcomm: eusb2-repeater: Migrate to devm_spmi_subdevice_alloc_and_add()
      power: reset: qcom-pon: Migrate to devm_spmi_subdevice_alloc_and_add()
      nvmem: qcom-spmi-sdam: Migrate to devm_spmi_subdevice_alloc_and_add()
      spmi: Add helper to get a parent SPMI device
      spmi: Implement spmi_subdevice_alloc_and_add() and devm variant
      spmi: Remove unneeded goto in spmi_device_add() error path
      spmi: Print error status with %pe format
      spmi: Remove redundant dev_name() print in spmi_device_add()
      spmi: Fix potential use-after-free by grabbing of_node reference
      spmi: mtk-pmif: Add workaround for FSM lockup/error in read operation
      MAINTAINERS: Add Qualcomm SPMI controller entry
      spmi: pmic-arb: return 0 in spmi_pmic_arb_register_buses() on success
      comedi: addi_apci_3xxx: fix subdevice count underallocation
      ...

diff --cc MAINTAINERS
index bccf83d31ac6,80a4fac5f346..441385cd4884
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@@ -4459,15 -4472,15 +4492,24 @@@ S:	Orpha
  F:	Documentation/devicetree/bindings/sound/axentia,*
  F:	sound/soc/atmel/tse850-pcm5142.c

+ AXIADO SARADC DRIVER
+ M:	Petar Stepanovic <pstepanovic@axiado.com>
+ M:	Akhila Kavi <akavi@axiado.com>
+ M:	Prasad Bolisetty <pbolisetty@axiado.com>
+ L:	linux-iio@vger.kernel.org
+ S:	Maintained
+ F:	Documentation/devicetree/bindings/iio/adc/axiado,ax3000-saradc.yaml
+ F:	drivers/iio/adc/axiado_saradc.c
+
 +AXIADO SGPIO DRIVER
 +M:	Petar Stepanovic <pstepanovic@axiado.com>
 +M:	SriNavmani A <srinavmani@axiado.com>
 +M:	Prasad Bolisetty <pbolisetty@axiado.com>
 +L:	linux-gpio@vger.kernel.org
 +S:	Supported
 +F:	Documentation/devicetree/bindings/gpio/axiado,ax3005-sgpio.yaml
 +F:	drivers/gpio/gpio-axiado-sgpio.c
 +
  AXIS ARTPEC ARM64 SoC SUPPORT
  M:	Jesper Nilsson <jesper.nilsson@axis.com>
  M:	Lars Persson <lars.persson@axis.com>
diff --cc drivers/android/binder/thread.rs
index e0ed20f510fd,177e90a1e5a3..f5965e838a96
--- a/drivers/android/binder/thread.rs
+++ b/drivers/android/binder/thread.rs
@@@ -344,13 -345,13 +345,13 @@@ impl InnerThread
          }
      }

-     fn push_return_work(&mut self, reply: u32) {
+     fn push_return_work(&mut self, reply: u32) -> PushWorkRes {
          if let Ok(work) = ListArc::try_from_arc(self.return_work.clone()) {
              work.set_error_code(reply);
-             // Not notifying: Reply to current thread.
-             let _ = self.push_work(work);
+             self.push_work(work)
          } else {
 -            pr_warn!("Thread return work is already in use.");
 +            pr_warn_ratelimited!("Thread return work is already in use.\n");
+             PushWorkRes::Ok
          }
      }

diff --cc drivers/android/binder/transaction.rs
index 66045547c23a,22558bdeef16..48ac942bb75a
--- a/drivers/android/binder/transaction.rs
+++ b/drivers/android/binder/transaction.rs
@@@ -81,9 -272,17 +272,17 @@@ impl TransactionInfo
          self.flags.is_oneway()
      }

+     pub(crate) fn write_log(&self, ctx: &crate::Context) {
+         let entry = TransactionLogEntry::new(self, ctx);
+         TRANSACTION_LOG.add(&entry);
+         if self.reply != 0 && self.reply != BR_TRANSACTION_PENDING_FROZEN {
+             FAILED_TRANSACTION_LOG.add(&entry);
+         }
+     }
+
      pub(crate) fn report_netlink(&self, reply: u32, ctx: &crate::Context) {
          if let Err(err) = self.report_netlink_inner(reply, ctx) {
 -            pr_warn!(
 +            pr_warn_ratelimited!(
                  "{}:{} netlink report failed: {err:?}\n",
                  self.from_pid,
                  self.from_tid
@@@ -172,18 -371,10 +371,10 @@@ impl Transaction
              info.debug_id,
              allow_fds,
              txn_security_ctx_off.as_mut(),
-         ) {
-             Ok(alloc) => alloc,
-             Err(err) => {
-                 if !err.is_dead() {
-                     pr_warn!("Failure in copy_transaction_data: {:?}", err);
-                 }
-                 return Err(err);
-             }
-         };
+         )?;
          if info.is_oneway() {
              if from_parent.is_some() {
 -                pr_warn!("Oneway transaction should not be in a transaction stack.");
 +                pr_warn_ratelimited!("Oneway transaction should not be in a transaction stack.\n");
                  return Err(EINVAL.into());
              }
              alloc.set_info_oneway_node(node_ref.node.clone());
diff --cc rust/kernel/miscdevice.rs
index eacea29e3fb0,ecc142a1b7ea..900676ea6bbc
--- a/rust/kernel/miscdevice.rs
+++ b/rust/kernel/miscdevice.rs
@@@ -10,8 -10,12 +10,9 @@@

  use crate::{
      bindings,
+     container_of,
      device::Device,
 -    error::{
 -        to_result,
 -        VTABLE_DEFAULT_ERROR, //
 -    },
 +    error::to_result,
      fs::{
          File,
          Kiocb, //
@@@ -142,29 -180,31 +177,29 @@@ pub trait MiscDevice: Sized + Sync
      /// the VMA initialization by calling methods of `vma`. If the function does not return an
      /// error, the kernel will complete initialization of the VMA according to the properties of
      /// `vma`.
 +    #[optional]
      fn mmap(
-         _device: <Self::Ptr as ForeignOwnable>::Borrowed<'_>,
+         _device: <Self::File as ForeignOwnable>::Borrowed<'_>,
          _file: &File,
          _vma: &VmaNew,
 -    ) -> Result {
 -        build_error!(VTABLE_DEFAULT_ERROR)
 -    }
 +    ) -> Result;

      /// Read from this miscdevice.
 -    fn read_iter(_kiocb: Kiocb<'_, Self::File>, _iov: &mut IovIterDest<'_>) -> Result<usize> {
 -        build_error!(VTABLE_DEFAULT_ERROR)
 -    }
 +    #[optional]
-     fn read_iter(_kiocb: Kiocb<'_, Self::Ptr>, _iov: &mut IovIterDest<'_>) -> Result<usize>;
++    fn read_iter(_kiocb: Kiocb<'_, Self::File>, _iov: &mut IovIterDest<'_>) -> Result<usize>;

      /// Write to this miscdevice.
 -    fn write_iter(_kiocb: Kiocb<'_, Self::File>, _iov: &mut IovIterSource<'_>) -> Result<usize> {
 -        build_error!(VTABLE_DEFAULT_ERROR)
 -    }
 +    #[optional]
-     fn write_iter(_kiocb: Kiocb<'_, Self::Ptr>, _iov: &mut IovIterSource<'_>) -> Result<usize>;
++    fn write_iter(_kiocb: Kiocb<'_, Self::File>, _iov: &mut IovIterSource<'_>) -> Result<usize>;

      /// Handler for ioctls.
      ///
      /// The `cmd` argument is usually manipulated using the utilities in [`kernel::ioctl`].
      ///
      /// [`kernel::ioctl`]: mod@crate::ioctl
 +    #[optional]
      fn ioctl(
-         _device: <Self::Ptr as ForeignOwnable>::Borrowed<'_>,
+         _device: <Self::File as ForeignOwnable>::Borrowed<'_>,
          _file: &File,
          _cmd: u32,
          _arg: usize,
@@@ -178,21 -220,23 +213,21 @@@
      /// that have different layout on 32-bit and 64-bit userspace. If no implementation is
      /// provided, then `compat_ptr_ioctl` will be used instead.
      #[cfg(CONFIG_COMPAT)]
 +    #[optional]
      fn compat_ioctl(
-         _device: <Self::Ptr as ForeignOwnable>::Borrowed<'_>,
+         _device: <Self::File as ForeignOwnable>::Borrowed<'_>,
          _file: &File,
          _cmd: u32,
          _arg: usize,
 -    ) -> Result<isize> {
 -        build_error!(VTABLE_DEFAULT_ERROR)
 -    }
 +    ) -> Result<isize>;

      /// Show info for this fd.
 +    #[optional]
      fn show_fdinfo(
-         _device: <Self::Ptr as ForeignOwnable>::Borrowed<'_>,
+         _device: <Self::File as ForeignOwnable>::Borrowed<'_>,
          _m: &SeqFile,
          _file: &File,
 -    ) {
 -        build_error!(VTABLE_DEFAULT_ERROR)
 -    }
 +    );
  }

  /// A vtable for the file operations of a Rust miscdevice.