This is the start of the stable review cycle for the 5.15.68 release. There are 121 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know. Responses should be made by Thu, 15 Sep 2022 14:03:27 +0000. Anything received after that time might be too late. The whole patch series can be found in one patch at: https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.15.68-rc1.gz or in the git tree and branch at: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.15.y and the diffstat can be found below. thanks, greg k-h ------------- Pseudo-Shortlog of commits: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> Linux 5.15.68-rc1 Claudiu Beznea <claudiu.beznea@xxxxxxxxxxxxx> ARM: at91: ddr: remove CONFIG_SOC_SAMA7 dependency Arnaldo Carvalho de Melo <acme@xxxxxxxxxx> perf machine: Use path__join() to compose a path instead of snprintf(dir, '/', filename) Neil Armstrong <narmstrong@xxxxxxxxxxxx> drm/bridge: display-connector: implement bus fmts callbacks Ionela Voinescu <ionela.voinescu@xxxxxxx> arm64: errata: add detection for AMEVCNTR01 incrementing incorrectly Lu Baolu <baolu.lu@xxxxxxxxxxxxxxx> iommu/vt-d: Correctly calculate sagaw value of IOMMU Mark Brown <broonie@xxxxxxxxxx> arm64/bti: Disable in kernel BTI when cross section thunks are broken Sasha Levin <sashal@xxxxxxxxxx> Revert "arm64: kasan: Revert "arm64: mte: reset the page tag in page->flags"" Eliav Farber <farbere@xxxxxxxxxx> hwmon: (mr75203) enable polling for all VM channels Eliav Farber <farbere@xxxxxxxxxx> hwmon: (mr75203) fix multi-channel voltage reading Eliav Farber <farbere@xxxxxxxxxx> hwmon: (mr75203) fix voltage equation for negative source input Eliav Farber <farbere@xxxxxxxxxx> hwmon: (mr75203) update pvt->v_num and vm_num to the actual number of used sensors Eliav Farber <farbere@xxxxxxxxxx> hwmon: (mr75203) fix VM sensor allocation when "intel,vm-map" not defined Alexander Gordeev <agordeev@xxxxxxxxxxxxx> s390/boot: fix absolute zero lowcore corruption on boot John Sperbeck <jsperbeck@xxxxxxxxxx> iommu/amd: use full 64-bit value in build_completion_wait() Chao Gao <chao.gao@xxxxxxxxx> swiotlb: avoid potential left shift overflow Przemyslaw Patynowski <przemyslawx.patynowski@xxxxxxxxx> i40e: Fix ADQ rate limiting for PF Przemyslaw Patynowski <przemyslawx.patynowski@xxxxxxxxx> i40e: Refactor tc mqprio checks Masahiro Yamada <masahiroy@xxxxxxxxxx> kbuild: disable header exports for UML in a straightforward way Yang Ling <gnaygnil@xxxxxxxxx> MIPS: loongson32: ls1c: Fix hang during startup Nathan Chancellor <nathan@xxxxxxxxxx> ASoC: mchp-spdiftx: Fix clang -Wbitfield-constant-conversion Claudiu Beznea <claudiu.beznea@xxxxxxxxxxxxx> ASoC: mchp-spdiftx: remove references to mchp_i2s_caps Alexandru Gagniuc <mr.nuke.me@xxxxxxxxx> hwmon: (tps23861) fix byte order in resistance register Zhengjun Xing <zhengjun.xing@xxxxxxxxxxxxxxx> perf script: Fix Cannot print 'iregs' field for hybrid systems Toke Høiland-Jørgensen <toke@xxxxxxx> sch_sfb: Also store skb len before calling child enqueue Sindhu-Devale <sindhu.devale@xxxxxxxxx> RDMA/irdma: Report RNR NAK generation in device caps Sindhu-Devale <sindhu.devale@xxxxxxxxx> RDMA/irdma: Return correct WC error for bind operation failure Sindhu-Devale <sindhu.devale@xxxxxxxxx> RDMA/irdma: Report the correct max cqes from query device Dennis Maisenbacher <dennis.maisenbacher@xxxxxxx> nvmet: fix mar and mor off-by-one errors Neal Cardwell <ncardwell@xxxxxxxxxx> tcp: fix early ETIMEDOUT after spurious non-SACK RTO Sagi Grimberg <sagi@xxxxxxxxxxx> nvme-tcp: fix regression that causes sporadic requests to time out Sagi Grimberg <sagi@xxxxxxxxxxx> nvme-tcp: fix UAF when detecting digest errors Gao Xiang <hsiangkao@xxxxxxxxxxxxxxxxx> erofs: fix pcluster use-after-free on UP platforms Chris Mi <cmi@xxxxxxxxxx> RDMA/mlx5: Set local port to one when accessing counters Yishai Hadas <yishaih@xxxxxxxxxx> IB/core: Fix a nested dead lock as part of ODP flow David Lebrun <dlebrun@xxxxxxxxxx> ipv6: sr: fix out-of-bounds read when setting HMAC data. Linus Walleij <linus.walleij@xxxxxxxxxx> RDMA/siw: Pass a pointer to virt_to_page() Paul Durrant <pdurrant@xxxxxxxxxx> xen-netback: only remove 'hotplug-status' when the vif is actually destroyed Csókás Bence <csokas.bence@xxxxxxxxx> net: fec: Use a spinlock to guard `fep->ptp_clk_on` Ivan Vecera <ivecera@xxxxxxxxxx> iavf: Detach device during reset task Ivan Vecera <ivecera@xxxxxxxxxx> i40e: Fix kernel crash during module removal Michal Swiatkowski <michal.swiatkowski@xxxxxxxxxxxxxxx> ice: use bitmap_free instead of devm_kfree Eric Dumazet <edumazet@xxxxxxxxxx> tcp: TX zerocopy should not sense pfmemalloc status Pavel Begunkov <asml.silence@xxxxxxxxx> net: introduce __skb_fill_page_desc_noacc Dan Carpenter <dan.carpenter@xxxxxxxxxx> tipc: fix shift wrapping bug in map_get() Toke Høiland-Jørgensen <toke@xxxxxxx> sch_sfb: Don't assume the skb is still around after enqueueing to child Heiner Kallweit <hkallweit1@xxxxxxxxx> Revert "net: phy: meson-gxl: improve link-up behavior" David Howells <dhowells@xxxxxxxxxx> afs: Use the operation issue time instead of the reply time for callbacks David Howells <dhowells@xxxxxxxxxx> rxrpc: Fix an insufficiently large sglist in rxkad_verify_packet_2() David Howells <dhowells@xxxxxxxxxx> rxrpc: Fix ICMP/ICMP6 error handling Takashi Iwai <tiwai@xxxxxxx> ALSA: usb-audio: Register card again for iface over delayed_register option Takashi Iwai <tiwai@xxxxxxx> ALSA: usb-audio: Inform the delayed registration more properly yangx.jy@xxxxxxxxxxx <yangx.jy@xxxxxxxxxxx> RDMA/srp: Set scmnd->result only when scmnd is not NULL David Leadbeater <dgl@xxxxxx> netfilter: nf_conntrack_irc: Fix forged IP logic Pablo Neira Ayuso <pablo@xxxxxxxxxxxxx> netfilter: nf_tables: clean up hook list when offload flags check fails Harsh Modi <harshmodi@xxxxxxxxxx> netfilter: br_netfilter: Drop dst references before setting. Claudiu Beznea <claudiu.beznea@xxxxxxxxxxxxx> ARM: dts: at91: sama5d2_icp: don't keep vdd_other enabled all the time Claudiu Beznea <claudiu.beznea@xxxxxxxxxxxxx> ARM: dts: at91: sama5d27_wlsom1: don't keep ldo2 enabled all the time Claudiu Beznea <claudiu.beznea@xxxxxxxxxxxxx> ARM: dts: at91: sama5d2_icp: specify proper regulator output ranges Claudiu Beznea <claudiu.beznea@xxxxxxxxxxxxx> ARM: dts: at91: sama5d27_wlsom1: specify proper regulator output ranges Claudiu Beznea <claudiu.beznea@xxxxxxxxxxxxx> ARM: at91: pm: fix DDR recalibration when resuming from backup and self-refresh Claudiu Beznea <claudiu.beznea@xxxxxxxxxxxxx> ARM: at91: pm: fix self-refresh for sama7g5 Ajay.Kathat@xxxxxxxxxxxxx <Ajay.Kathat@xxxxxxxxxxxxx> wifi: wilc1000: fix DMA on stack objects Wenpeng Liang <liangwenpeng@xxxxxxxxxx> RDMA/hns: Fix wrong fixed value of qp->rq.wqe_shift Chengchang Tang <tangchengchang@xxxxxxxxxx> RDMA/hns: Fix supported page size Liang He <windhl@xxxxxxx> soc: brcmstb: pm-arm: Fix refcount leak and __iomem leak bugs Michael Guralnik <michaelgur@xxxxxxxxxx> RDMA/cma: Fix arguments order in net device validation Jens Wiklander <jens.wiklander@xxxxxxxxxx> tee: fix compiler warning in tee_shm_register() Andrew Halaney <ahalaney@xxxxxxxxxx> regulator: core: Clean up on enable failure Marek Vasut <marex@xxxxxxx> soc: imx: gpcv2: Assert reset before ungating clock Marco Felsch <m.felsch@xxxxxxxxxxxxxx> ARM: dts: imx6qdl-kontron-samx6i: remove duplicated node Jack Wang <jinpu.wang@xxxxxxxxx> RDMA/rtrs-srv: Pass the correct number of entries for dma mapped SGL Jack Wang <jinpu.wang@xxxxxxxxx> RDMA/rtrs-clt: Use the right sg_cnt after ib_dma_map_sg Srinivas Kandagatla <srinivas.kandagatla@xxxxxxxxxx> ASoC: qcom: sm8250: add missing module owner Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> riscv: dts: microchip: mpfs: Fix reference clock node Tejun Heo <tj@xxxxxxxxxx> cgroup: Fix threadgroup_rwsem <-> cpus_read_lock() deadlock Tejun Heo <tj@xxxxxxxxxx> cgroup: Elide write-locking threadgroup_rwsem when updating csses on an empty subtree Trond Myklebust <trond.myklebust@xxxxxxxxxxxxxxx> NFS: Fix another fsync() issue after a server reboot Trond Myklebust <trond.myklebust@xxxxxxxxxxxxxxx> NFS: Save some space in the inode Trond Myklebust <trond.myklebust@xxxxxxxxxxxxxxx> NFS: Further optimisations for 'ls -l' Yang Yingliang <yangyingliang@xxxxxxxxxx> scsi: lpfc: Add missing destroy_workqueue() in error path Sreekanth Reddy <sreekanth.reddy@xxxxxxxxxxxx> scsi: mpt3sas: Fix use-after-free warning Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> drm/i915: Implement WaEdpLinkRateDataReload Bart Van Assche <bvanassche@xxxxxxx> nvmet: fix a use-after-free Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> drm/amd/display: fix memory leak when using debugfs_lookup() Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> sched/debug: fix dentry leak in update_sched_domain_debugfs Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> debugfs: add debugfs_lookup_and_remove() Christian A. Ehrhardt <lk@xxxxxxx> kprobes: Prohibit probes in gate area Alex Williamson <alex.williamson@xxxxxxxxxx> vfio/type1: Unpin zero pages Shin'ichiro Kawasaki <shinichiro.kawasaki@xxxxxxx> btrfs: zoned: set pseudo max append zone limit in zone emulation mode Masami Hiramatsu (Google) <mhiramat@xxxxxxxxxx> tracing: Fix to check event_mutex is held while accessing trigger list Dongxiang Ke <kdx.glider@xxxxxxxxx> ALSA: usb-audio: Fix an out-of-bounds bug in __snd_usb_parse_audio_interface() Takashi Iwai <tiwai@xxxxxxx> ALSA: usb-audio: Split endpoint setups for hw_params and prepare Pattara Teerapong <pteerapong@xxxxxxxxxxxx> ALSA: aloop: Fix random zeros in capture data when using jiffies timer Tasos Sahanidis <tasos@xxxxxxxxxxxx> ALSA: emu10k1: Fix out of bounds access in snd_emu10k1_pcm_channel_alloc() Takashi Iwai <tiwai@xxxxxxx> ALSA: pcm: oss: Fix race at SNDCTL_DSP_SYNC Qu Huang <jinsdb@xxxxxxx> drm/amdgpu: mmVM_L2_CNTL3 register not initialized correctly Yang Yingliang <yangyingliang@xxxxxxxxxx> fbdev: chipsfb: Add missing pci_disable_device() in chipsfb_pci_init() Shigeru Yoshida <syoshida@xxxxxxxxxx> fbdev: fbcon: Destroy mutex on freeing struct fb_info David Sloan <david.sloan@xxxxxxxxxxxxx> md: Flush workqueue md_rdev_misc_wq in md_alloc() lily <floridsleeves@xxxxxxxxx> net/core/skbuff: Check the return value of skb_copy_bits() Lukasz Luba <lukasz.luba@xxxxxxx> cpufreq: check only freq_table in __resolve_freq() Florian Westphal <fw@xxxxxxxxx> netfilter: conntrack: work around exceeded receive window Mark Brown <broonie@xxxxxxxxxx> arm64/signal: Raise limit on stack frames Sudeep Holla <sudeep.holla@xxxxxxx> arm64: cacheinfo: Fix incorrect assignment of signed error value to unsigned fw_level Helge Deller <deller@xxxxxx> parisc: Add runtime check to prevent PA2.0 kernels on PA1.x machines Li Qiong <liqiong@xxxxxxxxxxxx> parisc: ccio-dma: Handle kmalloc failure in ccio_init_resources() Helge Deller <deller@xxxxxx> Revert "parisc: Show error if wrong 32/64-bit compiler is being used" Bart Van Assche <bvanassche@xxxxxxx> scsi: ufs: core: Reduce the power mode change timeout Zhenneng Li <lizhenneng@xxxxxxxxxx> drm/radeon: add a force flush to delay work when radeon Candice Li <candice.li@xxxxxxx> drm/amdgpu: Check num_gfx_rings for gfx v9_0 rb setup. YiPeng Chai <YiPeng.Chai@xxxxxxx> drm/amdgpu: Move psp_xgmi_terminate call from amdgpu_xgmi_remove_device to psp_hw_fini Jeffy Chen <jeffy.chen@xxxxxxxxxxxxxx> drm/gem: Fix GEM handle release errors Guixin Liu <kanie@xxxxxxxxxxxxxxxxx> scsi: megaraid_sas: Fix double kfree() Tony Battersby <tonyb@xxxxxxxxxxxxxxx> scsi: qla2xxx: Disable ATIO interrupt coalesce for quad port ISP27XX Yee Lee <yee.lee@xxxxxxxxxxxx> Revert "mm: kmemleak: take a full lowmem check in kmemleak_*_phys()" Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> fs: only do a memory barrier for the first set_buffer_uptodate() Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> net: mvpp2: debugfs: fix memory leak when using debugfs_lookup() Stanislaw Gruszka <stf_xl@xxxxx> wifi: iwlegacy: 4965: corrected fix for potential off-by-one overflow in il4965_rs_fill_link_cmd() Hyunwoo Kim <imv4bel@xxxxxxxxx> efi: capsule-loader: Fix use-after-free in efi_capsule_write Ard Biesheuvel <ardb@xxxxxxxxxx> efi: libstub: Disable struct randomization Jakub Kicinski <kuba@xxxxxxxxxx> net: wwan: iosm: remove pointless null check ------------- Diffstat: Documentation/arm64/silicon-errata.rst | 2 + Makefile | 7 +- arch/arm/boot/dts/at91-sama5d27_wlsom1.dtsi | 21 +- arch/arm/boot/dts/at91-sama5d2_icp.dts | 21 +- arch/arm/boot/dts/imx6qdl-kontron-samx6i.dtsi | 10 - arch/arm/mach-at91/pm.c | 36 ++- arch/arm/mach-at91/pm_suspend.S | 24 +- arch/arm64/Kconfig | 19 ++ arch/arm64/kernel/cacheinfo.c | 6 +- arch/arm64/kernel/cpu_errata.c | 9 + arch/arm64/kernel/cpufeature.c | 5 +- arch/arm64/kernel/hibernate.c | 5 + arch/arm64/kernel/mte.c | 9 + arch/arm64/kernel/signal.c | 2 +- arch/arm64/kernel/topology.c | 32 ++- arch/arm64/mm/copypage.c | 9 + arch/arm64/mm/mteswap.c | 9 + arch/arm64/tools/cpucaps | 1 + arch/mips/loongson32/ls1c/board.c | 1 - arch/parisc/include/asm/bitops.h | 8 - arch/parisc/kernel/head.S | 43 ++- .../dts/microchip/microchip-mpfs-icicle-kit.dts | 4 + arch/riscv/boot/dts/microchip/microchip-mpfs.dtsi | 12 +- arch/s390/kernel/nmi.c | 2 +- arch/s390/kernel/setup.c | 1 + drivers/cpufreq/cpufreq.c | 2 +- drivers/firmware/efi/capsule-loader.c | 31 +-- drivers/firmware/efi/libstub/Makefile | 7 + drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 3 + drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c | 2 +- drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 3 +- drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c | 1 + .../drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c | 2 +- drivers/gpu/drm/bridge/display-connector.c | 86 ++++++ drivers/gpu/drm/drm_gem.c | 17 +- drivers/gpu/drm/drm_internal.h | 4 +- drivers/gpu/drm/drm_prime.c | 20 +- .../gpu/drm/i915/display/intel_dp_link_training.c | 22 ++ drivers/gpu/drm/radeon/radeon_device.c | 3 + drivers/hwmon/mr75203.c | 72 +++-- drivers/hwmon/tps23861.c | 10 +- drivers/infiniband/core/cma.c | 4 +- drivers/infiniband/core/umem_odp.c | 2 +- drivers/infiniband/hw/hns/hns_roce_hw_v2.h | 2 +- drivers/infiniband/hw/hns/hns_roce_qp.c | 7 +- drivers/infiniband/hw/irdma/uk.c | 4 +- drivers/infiniband/hw/irdma/verbs.c | 7 +- drivers/infiniband/hw/mlx5/mad.c | 6 + drivers/infiniband/sw/siw/siw_qp_tx.c | 18 +- drivers/infiniband/ulp/rtrs/rtrs-clt.c | 9 +- drivers/infiniband/ulp/rtrs/rtrs-srv.c | 14 +- drivers/infiniband/ulp/srp/ib_srp.c | 3 +- drivers/iommu/amd/iommu.c | 3 +- drivers/iommu/intel/iommu.c | 28 +- drivers/md/md.c | 1 + drivers/net/ethernet/freescale/fec.h | 1 - drivers/net/ethernet/freescale/fec_main.c | 17 +- drivers/net/ethernet/freescale/fec_ptp.c | 28 +- drivers/net/ethernet/intel/i40e/i40e.h | 14 + drivers/net/ethernet/intel/i40e/i40e_client.c | 5 +- drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 2 +- drivers/net/ethernet/intel/i40e/i40e_main.c | 23 +- drivers/net/ethernet/intel/i40e/i40e_txrx.c | 3 +- drivers/net/ethernet/intel/iavf/iavf_main.c | 14 +- drivers/net/ethernet/intel/ice/ice_main.c | 2 +- drivers/net/ethernet/marvell/mvpp2/mvpp2_debugfs.c | 4 +- drivers/net/phy/meson-gxl.c | 8 +- drivers/net/wireless/intel/iwlegacy/4965-rs.c | 5 +- drivers/net/wireless/microchip/wilc1000/netdev.h | 1 + drivers/net/wireless/microchip/wilc1000/sdio.c | 39 ++- drivers/net/wireless/microchip/wilc1000/wlan.c | 15 +- drivers/net/wwan/iosm/iosm_ipc_protocol_ops.c | 10 - drivers/net/xen-netback/xenbus.c | 2 +- drivers/nvme/host/tcp.c | 7 +- drivers/nvme/target/core.c | 6 +- drivers/nvme/target/zns.c | 17 +- drivers/parisc/ccio-dma.c | 11 +- drivers/regulator/core.c | 9 +- drivers/scsi/lpfc/lpfc_init.c | 5 +- drivers/scsi/megaraid/megaraid_sas_fusion.c | 1 - drivers/scsi/mpt3sas/mpt3sas_scsih.c | 2 +- drivers/scsi/qla2xxx/qla_target.c | 10 +- drivers/scsi/ufs/ufshcd.c | 9 +- drivers/soc/bcm/brcmstb/pm/pm-arm.c | 50 +++- drivers/soc/imx/gpcv2.c | 5 +- drivers/tee/tee_shm.c | 1 + drivers/vfio/vfio_iommu_type1.c | 12 + drivers/video/fbdev/chipsfb.c | 1 + drivers/video/fbdev/core/fbsysfs.c | 4 + fs/afs/flock.c | 2 +- fs/afs/fsclient.c | 2 +- fs/afs/internal.h | 3 +- fs/afs/rxrpc.c | 7 +- fs/afs/yfsclient.c | 3 +- fs/btrfs/zoned.c | 15 +- fs/debugfs/inode.c | 22 ++ fs/erofs/internal.h | 29 -- fs/nfs/dir.c | 16 +- fs/nfs/file.c | 15 +- fs/nfs/inode.c | 27 +- fs/nfs/write.c | 6 +- include/linux/buffer_head.h | 11 + include/linux/debugfs.h | 6 + include/linux/nfs_fs.h | 48 ++-- include/linux/skbuff.h | 49 +++- include/linux/udp.h | 1 + include/net/udp_tunnel.h | 4 + include/soc/at91/sama7-ddr.h | 12 +- kernel/cgroup/cgroup.c | 85 ++++-- kernel/cgroup/cpuset.c | 3 +- kernel/dma/swiotlb.c | 5 +- kernel/fork.c | 1 + kernel/kprobes.c | 1 + kernel/sched/debug.c | 2 +- kernel/trace/trace_events_trigger.c | 3 +- mm/kmemleak.c | 8 +- net/bridge/br_netfilter_hooks.c | 2 + net/bridge/br_netfilter_ipv6.c | 1 + net/core/datagram.c | 2 +- net/core/skbuff.c | 5 +- net/ipv4/tcp.c | 2 +- net/ipv4/tcp_input.c | 25 +- net/ipv4/udp.c | 2 + net/ipv4/udp_tunnel_core.c | 1 + net/ipv6/seg6.c | 5 + net/ipv6/udp.c | 5 +- net/netfilter/nf_conntrack_irc.c | 5 +- net/netfilter/nf_conntrack_proto_tcp.c | 31 +++ net/netfilter/nf_tables_api.c | 4 +- net/rxrpc/ar-internal.h | 1 + net/rxrpc/local_object.c | 1 + net/rxrpc/peer_event.c | 293 ++++++++++++++++++--- net/rxrpc/rxkad.c | 2 +- net/sched/sch_sfb.c | 13 +- net/tipc/monitor.c | 2 +- sound/core/oss/pcm_oss.c | 6 +- sound/drivers/aloop.c | 7 +- sound/pci/emu10k1/emupcm.c | 2 +- sound/soc/atmel/mchp-spdiftx.c | 10 +- sound/soc/qcom/sm8250.c | 1 + sound/usb/card.c | 2 +- sound/usb/endpoint.c | 23 +- sound/usb/endpoint.h | 6 +- sound/usb/pcm.c | 14 +- sound/usb/quirks.c | 2 +- sound/usb/stream.c | 9 +- tools/perf/builtin-script.c | 3 + tools/perf/util/machine.c | 3 +- 148 files changed, 1376 insertions(+), 534 deletions(-)