From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
patches@lists.linux.dev, Uday Shankar <ushankar@purestorage.com>,
Ming Lei <ming.lei@redhat.com>, Jens Axboe <axboe@kernel.dk>
Subject: [PATCH 6.14 157/183] ublk: improve detection and handling of ublk server exit
Date: Wed, 7 May 2025 20:40:02 +0200 [thread overview]
Message-ID: <20250507183831.220986208@linuxfoundation.org> (raw)
In-Reply-To: <20250507183824.682671926@linuxfoundation.org>
6.14-stable review patch. If anyone has any objections, please let me know.
------------------
From: Uday Shankar <ushankar@purestorage.com>
[ Upstream commit 82a8a30c581bbbe653d33c6ce2ef67e3072c7f12 ]
There are currently two ways in which ublk server exit is detected by
ublk_drv:
1. uring_cmd cancellation. If there are any outstanding uring_cmds which
have not been completed to the ublk server when it exits, io_uring
calls the uring_cmd callback with a special cancellation flag as the
issuing task is exiting.
2. I/O timeout. This is needed in addition to the above to handle the
"saturated queue" case, when all I/Os for a given queue are in the
ublk server, and therefore there are no outstanding uring_cmds to
cancel when the ublk server exits.
There are a couple of issues with this approach:
- It is complex and inelegant to have two methods to detect the same
condition
- The second method detects ublk server exit only after a long delay
(~30s, the default timeout assigned by the block layer). This delays
the nosrv behavior from kicking in and potential subsequent recovery
of the device.
The second issue is brought to light with the new test_generic_06 which
will be added in following patch. It fails before this fix:
selftests: ublk: test_generic_06.sh
dev id is 0
dd: error writing '/dev/ublkb0': Input/output error
1+0 records in
0+0 records out
0 bytes copied, 30.0611 s, 0.0 kB/s
DEAD
dd took 31 seconds to exit (>= 5s tolerance)!
generic_06 : [FAIL]
Fix this by instead detecting and handling ublk server exit in the
character file release callback. This has several advantages:
- This one place can handle both saturated and unsaturated queues. Thus,
it replaces both preexisting methods of detecting ublk server exit.
- It runs quickly on ublk server exit - there is no 30s delay.
- It starts the process of removing task references in ublk_drv. This is
needed if we want to relax restrictions in the driver like letting
only one thread serve each queue
There is also the disadvantage that the character file release callback
can also be triggered by intentional close of the file, which is a
significant behavior change. Preexisting ublk servers (libublksrv) are
dependent on the ability to open/close the file multiple times. To
address this, only transition to a nosrv state if the file is released
while the ublk device is live. This allows for programs to open/close
the file multiple times during setup. It is still a behavior change if a
ublk server decides to close/reopen the file while the device is LIVE
(i.e. while it is responsible for serving I/O), but that would be highly
unusual. This behavior is in line with what is done by FUSE, which is
very similar to ublk in that a userspace daemon is providing services
traditionally provided by the kernel.
With this change in, the new test (and all other selftests, and all
ublksrv tests) pass:
selftests: ublk: test_generic_06.sh
dev id is 0
dd: error writing '/dev/ublkb0': Input/output error
1+0 records in
0+0 records out
0 bytes copied, 0.0376731 s, 0.0 kB/s
DEAD
generic_04 : [PASS]
Signed-off-by: Uday Shankar <ushankar@purestorage.com>
Signed-off-by: Ming Lei <ming.lei@redhat.com>
Link: https://lore.kernel.org/r/20250416035444.99569-6-ming.lei@redhat.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/block/ublk_drv.c | 223 ++++++++++++++++++++++++++---------------------
1 file changed, 124 insertions(+), 99 deletions(-)
--- a/drivers/block/ublk_drv.c
+++ b/drivers/block/ublk_drv.c
@@ -194,8 +194,6 @@ struct ublk_device {
struct completion completion;
unsigned int nr_queues_ready;
unsigned int nr_privileged_daemon;
-
- struct work_struct nosrv_work;
};
/* header of ublk_params */
@@ -204,7 +202,10 @@ struct ublk_params_header {
__u32 types;
};
-static bool ublk_abort_requests(struct ublk_device *ub, struct ublk_queue *ubq);
+
+static void ublk_stop_dev_unlocked(struct ublk_device *ub);
+static void ublk_abort_queue(struct ublk_device *ub, struct ublk_queue *ubq);
+static void __ublk_quiesce_dev(struct ublk_device *ub);
static inline unsigned int ublk_req_build_flags(struct request *req);
static inline struct ublksrv_io_desc *ublk_get_iod(struct ublk_queue *ubq,
@@ -1306,8 +1307,6 @@ static void ublk_queue_cmd_list(struct u
static enum blk_eh_timer_return ublk_timeout(struct request *rq)
{
struct ublk_queue *ubq = rq->mq_hctx->driver_data;
- unsigned int nr_inflight = 0;
- int i;
if (ubq->flags & UBLK_F_UNPRIVILEGED_DEV) {
if (!ubq->timeout) {
@@ -1318,26 +1317,6 @@ static enum blk_eh_timer_return ublk_tim
return BLK_EH_DONE;
}
- if (!ubq_daemon_is_dying(ubq))
- return BLK_EH_RESET_TIMER;
-
- for (i = 0; i < ubq->q_depth; i++) {
- struct ublk_io *io = &ubq->ios[i];
-
- if (!(io->flags & UBLK_IO_FLAG_ACTIVE))
- nr_inflight++;
- }
-
- /* cancelable uring_cmd can't help us if all commands are in-flight */
- if (nr_inflight == ubq->q_depth) {
- struct ublk_device *ub = ubq->dev;
-
- if (ublk_abort_requests(ub, ubq)) {
- schedule_work(&ub->nosrv_work);
- }
- return BLK_EH_DONE;
- }
-
return BLK_EH_RESET_TIMER;
}
@@ -1495,13 +1474,105 @@ static void ublk_reset_ch_dev(struct ubl
ub->nr_privileged_daemon = 0;
}
+static struct gendisk *ublk_get_disk(struct ublk_device *ub)
+{
+ struct gendisk *disk;
+
+ spin_lock(&ub->lock);
+ disk = ub->ub_disk;
+ if (disk)
+ get_device(disk_to_dev(disk));
+ spin_unlock(&ub->lock);
+
+ return disk;
+}
+
+static void ublk_put_disk(struct gendisk *disk)
+{
+ if (disk)
+ put_device(disk_to_dev(disk));
+}
+
static int ublk_ch_release(struct inode *inode, struct file *filp)
{
struct ublk_device *ub = filp->private_data;
+ struct gendisk *disk;
+ int i;
+
+ /*
+ * disk isn't attached yet, either device isn't live, or it has
+ * been removed already, so we needn't to do anything
+ */
+ disk = ublk_get_disk(ub);
+ if (!disk)
+ goto out;
+
+ /*
+ * All uring_cmd are done now, so abort any request outstanding to
+ * the ublk server
+ *
+ * This can be done in lockless way because ublk server has been
+ * gone
+ *
+ * More importantly, we have to provide forward progress guarantee
+ * without holding ub->mutex, otherwise control task grabbing
+ * ub->mutex triggers deadlock
+ *
+ * All requests may be inflight, so ->canceling may not be set, set
+ * it now.
+ */
+ for (i = 0; i < ub->dev_info.nr_hw_queues; i++) {
+ struct ublk_queue *ubq = ublk_get_queue(ub, i);
+
+ ubq->canceling = true;
+ ublk_abort_queue(ub, ubq);
+ }
+ blk_mq_kick_requeue_list(disk->queue);
+
+ /*
+ * All infligh requests have been completed or requeued and any new
+ * request will be failed or requeued via `->canceling` now, so it is
+ * fine to grab ub->mutex now.
+ */
+ mutex_lock(&ub->mutex);
+
+ /* double check after grabbing lock */
+ if (!ub->ub_disk)
+ goto unlock;
+
+ /*
+ * Transition the device to the nosrv state. What exactly this
+ * means depends on the recovery flags
+ */
+ blk_mq_quiesce_queue(disk->queue);
+ if (ublk_nosrv_should_stop_dev(ub)) {
+ /*
+ * Allow any pending/future I/O to pass through quickly
+ * with an error. This is needed because del_gendisk
+ * waits for all pending I/O to complete
+ */
+ for (i = 0; i < ub->dev_info.nr_hw_queues; i++)
+ ublk_get_queue(ub, i)->force_abort = true;
+ blk_mq_unquiesce_queue(disk->queue);
+
+ ublk_stop_dev_unlocked(ub);
+ } else {
+ if (ublk_nosrv_dev_should_queue_io(ub)) {
+ __ublk_quiesce_dev(ub);
+ } else {
+ ub->dev_info.state = UBLK_S_DEV_FAIL_IO;
+ for (i = 0; i < ub->dev_info.nr_hw_queues; i++)
+ ublk_get_queue(ub, i)->fail_io = true;
+ }
+ blk_mq_unquiesce_queue(disk->queue);
+ }
+unlock:
+ mutex_unlock(&ub->mutex);
+ ublk_put_disk(disk);
/* all uring_cmd has been done now, reset device & ubq */
ublk_reset_ch_dev(ub);
-
+out:
clear_bit(UB_STATE_OPEN, &ub->state);
return 0;
}
@@ -1597,37 +1668,22 @@ static void ublk_abort_queue(struct ublk
}
/* Must be called when queue is frozen */
-static bool ublk_mark_queue_canceling(struct ublk_queue *ubq)
+static void ublk_mark_queue_canceling(struct ublk_queue *ubq)
{
- bool canceled;
-
spin_lock(&ubq->cancel_lock);
- canceled = ubq->canceling;
- if (!canceled)
+ if (!ubq->canceling)
ubq->canceling = true;
spin_unlock(&ubq->cancel_lock);
-
- return canceled;
}
-static bool ublk_abort_requests(struct ublk_device *ub, struct ublk_queue *ubq)
+static void ublk_start_cancel(struct ublk_queue *ubq)
{
- bool was_canceled = ubq->canceling;
- struct gendisk *disk;
-
- if (was_canceled)
- return false;
-
- spin_lock(&ub->lock);
- disk = ub->ub_disk;
- if (disk)
- get_device(disk_to_dev(disk));
- spin_unlock(&ub->lock);
+ struct ublk_device *ub = ubq->dev;
+ struct gendisk *disk = ublk_get_disk(ub);
/* Our disk has been dead */
if (!disk)
- return false;
-
+ return;
/*
* Now we are serialized with ublk_queue_rq()
*
@@ -1636,15 +1692,9 @@ static bool ublk_abort_requests(struct u
* touch completed uring_cmd
*/
blk_mq_quiesce_queue(disk->queue);
- was_canceled = ublk_mark_queue_canceling(ubq);
- if (!was_canceled) {
- /* abort queue is for making forward progress */
- ublk_abort_queue(ub, ubq);
- }
+ ublk_mark_queue_canceling(ubq);
blk_mq_unquiesce_queue(disk->queue);
- put_device(disk_to_dev(disk));
-
- return !was_canceled;
+ ublk_put_disk(disk);
}
static void ublk_cancel_cmd(struct ublk_queue *ubq, struct ublk_io *io,
@@ -1668,6 +1718,17 @@ static void ublk_cancel_cmd(struct ublk_
/*
* The ublk char device won't be closed when calling cancel fn, so both
* ublk device and queue are guaranteed to be live
+ *
+ * Two-stage cancel:
+ *
+ * - make every active uring_cmd done in ->cancel_fn()
+ *
+ * - aborting inflight ublk IO requests in ublk char device release handler,
+ * which depends on 1st stage because device can only be closed iff all
+ * uring_cmd are done
+ *
+ * Do _not_ try to acquire ub->mutex before all inflight requests are
+ * aborted, otherwise deadlock may be caused.
*/
static void ublk_uring_cmd_cancel_fn(struct io_uring_cmd *cmd,
unsigned int issue_flags)
@@ -1675,8 +1736,6 @@ static void ublk_uring_cmd_cancel_fn(str
struct ublk_uring_cmd_pdu *pdu = ublk_get_uring_cmd_pdu(cmd);
struct ublk_queue *ubq = pdu->ubq;
struct task_struct *task;
- struct ublk_device *ub;
- bool need_schedule;
struct ublk_io *io;
if (WARN_ON_ONCE(!ubq))
@@ -1689,16 +1748,12 @@ static void ublk_uring_cmd_cancel_fn(str
if (WARN_ON_ONCE(task && task != ubq->ubq_daemon))
return;
- ub = ubq->dev;
- need_schedule = ublk_abort_requests(ub, ubq);
+ if (!ubq->canceling)
+ ublk_start_cancel(ubq);
io = &ubq->ios[pdu->tag];
WARN_ON_ONCE(io->cmd != cmd);
ublk_cancel_cmd(ubq, io, issue_flags);
-
- if (need_schedule) {
- schedule_work(&ub->nosrv_work);
- }
}
static inline bool ublk_queue_ready(struct ublk_queue *ubq)
@@ -1757,13 +1812,11 @@ static void __ublk_quiesce_dev(struct ub
__func__, ub->dev_info.dev_id,
ub->dev_info.state == UBLK_S_DEV_LIVE ?
"LIVE" : "QUIESCED");
- blk_mq_quiesce_queue(ub->ub_disk->queue);
/* mark every queue as canceling */
for (i = 0; i < ub->dev_info.nr_hw_queues; i++)
ublk_get_queue(ub, i)->canceling = true;
ublk_wait_tagset_rqs_idle(ub);
ub->dev_info.state = UBLK_S_DEV_QUIESCED;
- blk_mq_unquiesce_queue(ub->ub_disk->queue);
}
static void ublk_force_abort_dev(struct ublk_device *ub)
@@ -1800,50 +1853,25 @@ static struct gendisk *ublk_detach_disk(
return disk;
}
-static void ublk_stop_dev(struct ublk_device *ub)
+static void ublk_stop_dev_unlocked(struct ublk_device *ub)
+ __must_hold(&ub->mutex)
{
struct gendisk *disk;
- mutex_lock(&ub->mutex);
if (ub->dev_info.state == UBLK_S_DEV_DEAD)
- goto unlock;
+ return;
+
if (ublk_nosrv_dev_should_queue_io(ub))
ublk_force_abort_dev(ub);
del_gendisk(ub->ub_disk);
disk = ublk_detach_disk(ub);
put_disk(disk);
- unlock:
- mutex_unlock(&ub->mutex);
- ublk_cancel_dev(ub);
}
-static void ublk_nosrv_work(struct work_struct *work)
+static void ublk_stop_dev(struct ublk_device *ub)
{
- struct ublk_device *ub =
- container_of(work, struct ublk_device, nosrv_work);
- int i;
-
- if (ublk_nosrv_should_stop_dev(ub)) {
- ublk_stop_dev(ub);
- return;
- }
-
mutex_lock(&ub->mutex);
- if (ub->dev_info.state != UBLK_S_DEV_LIVE)
- goto unlock;
-
- if (ublk_nosrv_dev_should_queue_io(ub)) {
- __ublk_quiesce_dev(ub);
- } else {
- blk_mq_quiesce_queue(ub->ub_disk->queue);
- ub->dev_info.state = UBLK_S_DEV_FAIL_IO;
- for (i = 0; i < ub->dev_info.nr_hw_queues; i++) {
- ublk_get_queue(ub, i)->fail_io = true;
- }
- blk_mq_unquiesce_queue(ub->ub_disk->queue);
- }
-
- unlock:
+ ublk_stop_dev_unlocked(ub);
mutex_unlock(&ub->mutex);
ublk_cancel_dev(ub);
}
@@ -2419,7 +2447,6 @@ static int ublk_add_tag_set(struct ublk_
static void ublk_remove(struct ublk_device *ub)
{
ublk_stop_dev(ub);
- cancel_work_sync(&ub->nosrv_work);
cdev_device_del(&ub->cdev, &ub->cdev_dev);
ublk_put_device(ub);
ublks_added--;
@@ -2693,7 +2720,6 @@ static int ublk_ctrl_add_dev(struct io_u
goto out_unlock;
mutex_init(&ub->mutex);
spin_lock_init(&ub->lock);
- INIT_WORK(&ub->nosrv_work, ublk_nosrv_work);
ret = ublk_alloc_dev_number(ub, header->dev_id);
if (ret < 0)
@@ -2828,7 +2854,6 @@ static inline void ublk_ctrl_cmd_dump(st
static int ublk_ctrl_stop_dev(struct ublk_device *ub)
{
ublk_stop_dev(ub);
- cancel_work_sync(&ub->nosrv_work);
return 0;
}
next prev parent reply other threads:[~2025-05-07 18:56 UTC|newest]
Thread overview: 199+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-07 18:37 [PATCH 6.14 000/183] 6.14.6-rc1 review Greg Kroah-Hartman
2025-05-07 18:37 ` [PATCH 6.14 001/183] Revert "rndis_host: Flag RNDIS modems as WWAN devices" Greg Kroah-Hartman
2025-05-07 18:37 ` [PATCH 6.14 002/183] ALSA: hda/realtek - Add more HP laptops which need mute led fixup Greg Kroah-Hartman
2025-05-07 18:37 ` [PATCH 6.14 003/183] ALSA: usb-audio: Add retry on -EPROTO from usb_set_interface() Greg Kroah-Hartman
2025-05-07 18:37 ` [PATCH 6.14 004/183] ALSA: usb-audio: Add second USB ID for Jabra Evolve 65 headset Greg Kroah-Hartman
2025-05-07 18:37 ` [PATCH 6.14 005/183] ASoC: renesas: rz-ssi: Use NOIRQ_SYSTEM_SLEEP_PM_OPS() Greg Kroah-Hartman
2025-05-07 18:37 ` [PATCH 6.14 006/183] btrfs: adjust subpage bit start based on sectorsize Greg Kroah-Hartman
2025-05-07 18:37 ` [PATCH 6.14 007/183] btrfs: fix COW handling in run_delalloc_nocow() Greg Kroah-Hartman
2025-05-07 18:37 ` [PATCH 6.14 008/183] cpufreq: intel_pstate: Unchecked MSR aceess in legacy mode Greg Kroah-Hartman
2025-05-07 18:37 ` [PATCH 6.14 009/183] drm/fdinfo: Protect against driver unbind Greg Kroah-Hartman
2025-05-07 18:37 ` [PATCH 6.14 010/183] drm/nouveau: Fix WARN_ON in nouveau_fence_context_kill() Greg Kroah-Hartman
2025-05-07 18:37 ` [PATCH 6.14 011/183] EDAC/altera: Test the correct error reg offset Greg Kroah-Hartman
2025-05-07 18:37 ` [PATCH 6.14 012/183] EDAC/altera: Set DDR and SDMMC interrupt mask before registration Greg Kroah-Hartman
2025-05-07 18:37 ` [PATCH 6.14 013/183] i2c: imx-lpi2c: Fix clock count when probe defers Greg Kroah-Hartman
2025-05-07 18:37 ` [PATCH 6.14 014/183] arm64: errata: Add missing sentinels to Spectre-BHB MIDR arrays Greg Kroah-Hartman
2025-05-07 18:37 ` [PATCH 6.14 015/183] parisc: Fix double SIGFPE crash Greg Kroah-Hartman
2025-05-07 18:37 ` [PATCH 6.14 016/183] pinctrl: airoha: fix wrong PHY LED mapping and PHY2 LED defines Greg Kroah-Hartman
2025-05-07 18:37 ` [PATCH 6.14 017/183] perf/x86/intel: Only check the group flag for X86 leader Greg Kroah-Hartman
2025-05-07 18:37 ` [PATCH 6.14 018/183] perf/x86/intel: KVM: Mask PEBS_ENABLE loaded for guest with vCPUs value Greg Kroah-Hartman
2025-05-07 18:37 ` [PATCH 6.14 019/183] amd-xgbe: Fix to ensure dependent features are toggled with RX checksum offload Greg Kroah-Hartman
2025-05-07 18:37 ` [PATCH 6.14 020/183] irqchip/qcom-mpm: Prevent crash when trying to handle non-wake GPIOs Greg Kroah-Hartman
2025-05-07 18:37 ` [PATCH 6.14 021/183] mm/memblock: pass size instead of end to memblock_set_node() Greg Kroah-Hartman
2025-05-07 18:37 ` [PATCH 6.14 022/183] mm/memblock: repeat setting reserved region nid if array is doubled Greg Kroah-Hartman
2025-05-07 18:37 ` [PATCH 6.14 023/183] mmc: renesas_sdhi: Fix error handling in renesas_sdhi_probe Greg Kroah-Hartman
2025-05-07 18:37 ` [PATCH 6.14 024/183] spi: tegra114: Dont fail set_cs_timing when delays are zero Greg Kroah-Hartman
2025-05-07 18:37 ` [PATCH 6.14 025/183] tracing: Do not take trace_event_sem in print_event_fields() Greg Kroah-Hartman
2025-05-07 18:37 ` [PATCH 6.14 026/183] wifi: brcm80211: fmac: Add error handling for brcmf_usb_dl_writeimage() Greg Kroah-Hartman
2025-05-07 18:37 ` [PATCH 6.14 027/183] x86/boot/sev: Support memory acceptance in the EFI stub under SVSM Greg Kroah-Hartman
2025-05-07 18:37 ` [PATCH 6.14 028/183] dm-bufio: dont schedule in atomic context Greg Kroah-Hartman
2025-05-07 18:37 ` [PATCH 6.14 029/183] dm-integrity: fix a warning on invalid table line Greg Kroah-Hartman
2025-05-07 18:37 ` [PATCH 6.14 030/183] dm: always update the array size in realloc_argv on success Greg Kroah-Hartman
2025-05-07 20:34 ` Mikulas Patocka
2025-05-08 5:31 ` Greg Kroah-Hartman
2025-05-07 18:37 ` [PATCH 6.14 031/183] drm/amdgpu: Fix offset for HDP remap in nbio v7.11 Greg Kroah-Hartman
2025-05-07 18:37 ` [PATCH 6.14 032/183] drm: Select DRM_KMS_HELPER from DRM_DEBUG_DP_MST_TOPOLOGY_REFS Greg Kroah-Hartman
2025-05-07 18:37 ` [PATCH 6.14 033/183] iommu/amd: Fix potential buffer overflow in parse_ivrs_acpihid Greg Kroah-Hartman
2025-05-07 18:37 ` [PATCH 6.14 034/183] iommu/arm-smmu-v3: Fix iommu_device_probe bug due to duplicated stream ids Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 035/183] iommu/arm-smmu-v3: Fix pgsize_bit for sva domains Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 036/183] iommu/vt-d: Apply quirk_iommu_igfx for 8086:0044 (QM57/QS57) Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 037/183] iommu: Fix two issues in iommu_copy_struct_from_user() Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 038/183] platform/x86/amd: pmc: Require at least 2.5 seconds between HW sleep cycles Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 039/183] platform/x86/intel-uncore-freq: Fix missing uncore sysfs during CPU hotplug Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 040/183] ksmbd: fix use-after-free in ksmbd_session_rpc_open Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 041/183] ksmbd: fix use-after-free in kerberos authentication Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 042/183] ksmbd: fix use-after-free in session logoff Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 043/183] smb: client: fix zero length for mkdir POSIX create context Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 044/183] cpufreq: Avoid using inconsistent policy->min and policy->max Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 045/183] cpufreq: Fix setting policy limits when frequency tables are used Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 046/183] tracing: Fix oob write in trace_seq_to_buffer() Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 047/183] bcachefs: Remove incorrect __counted_by annotation Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 048/183] drm/amd/display: Default IPS to RCG_IN_ACTIVE_IPS2_IN_OFF Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 049/183] ASoC: soc-core: Stop using of_property_read_bool() for non-boolean properties Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 050/183] ASoC: cs-amp-lib-test: Dont select SND_SOC_CS_AMP_LIB Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 051/183] firmware: cs_dsp: tests: Depend on FW_CS_DSP rather then enabling it Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 052/183] ASoC: soc-pcm: Fix hw_params() and DAPM widget sequence Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 053/183] book3s64/radix : Align section vmemmap start address to PAGE_SIZE Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 054/183] powerpc64/ftrace: fix module loading without patchable function entries Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 055/183] pinctrl: imx: Return NULL if no group is matched and found Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 056/183] powerpc/boot: Check for ld-option support Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 057/183] ASoC: Intel: sof_sdw: Add NULL check in asoc_sdw_rt_dmic_rtd_init() Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 058/183] iommu/arm-smmu-v3: Add missing S2FWB feature detection Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 059/183] ALSA: hda/realtek - Enable speaker for HP platform Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 060/183] drm/i915/pxp: fix undefined reference to `intel_pxp_gsccs_is_ready_for_sessions Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 061/183] wifi: iwlwifi: back off on continuous errors Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 062/183] wifi: iwlwifi: dont warn if the NIC is gone in resume Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 063/183] wifi: iwlwifi: fix the check for the SCRATCH register upon resume Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 064/183] wifi: plfxlc: Remove erroneous assert in plfxlc_mac_release Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 065/183] powerpc/boot: Fix dash warning Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 066/183] vxlan: vnifilter: Fix unlocked deletion of default FDB entry Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 067/183] xsk: Fix race condition in AF_XDP generic RX path Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 068/183] xsk: Fix offset calculation in unaligned mode Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 069/183] net/mlx5e: Use custom tunnel header for vxlan gbp Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 070/183] net/mlx5: E-Switch, Initialize MAC Address for Default GID Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 071/183] net/mlx5e: TC, Continue the attr process even if encap entry is invalid Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 072/183] net/mlx5e: Fix lock order in mlx5e_tx_reporter_ptpsq_unhealthy_recover Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 073/183] net/mlx5: E-switch, Fix error handling for enabling roce Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 074/183] accel/ivpu: Correct DCT interrupt handling Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 075/183] spi: spi-mem: Add fix to avoid divide error Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 076/183] ASoC: amd: acp: Fix NULL pointer deref in acp_i2s_set_tdm_slot Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 077/183] cpufreq: Introduce policy->boost_supported flag Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 078/183] cpufreq: acpi: Set policy->boost_supported Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 079/183] cpufreq: ACPI: Re-sync CPU boost state on system resume Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 080/183] Bluetooth: hci_conn: Fix not setting conn_timeout for Broadcast Receiver Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 081/183] Bluetooth: hci_conn: Fix not setting timeout for BIG Create Sync Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 082/183] Bluetooth: btintel_pcie: Avoid redundant buffer allocation Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 083/183] Bluetooth: btusb: avoid NULL pointer dereference in skb_dequeue() Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 084/183] Bluetooth: btintel_pcie: Add additional to checks to clear TX/RX paths Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 085/183] Bluetooth: L2CAP: copy RX timestamp to new fragments Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 086/183] net: mscc: ocelot: delete PVID VLAN when readding it as non-PVID Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 087/183] octeon_ep_vf: Resolve netdevice usage count issue Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 088/183] bnxt_en: improve TX timestamping FIFO configuration Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 089/183] rtase: Modify the condition used to detect overflow in rtase_calc_time_mitigation Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 090/183] net: ethernet: mtk-star-emac: fix spinlock recursion issues on rx/tx poll Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 091/183] net: ethernet: mtk-star-emac: rearm interrupts in rx_poll only when advised Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 092/183] net: ethernet: mtk_eth_soc: sync mtk_clks_source_name array Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 093/183] pds_core: make pdsc_auxbus_dev_del() void Greg Kroah-Hartman
2025-05-07 18:38 ` [PATCH 6.14 094/183] pds_core: specify auxiliary_device to be created Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 095/183] pds_core: remove write-after-free of client_id Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 096/183] net_sched: drr: Fix double list add in class with netem as child qdisc Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 097/183] net_sched: hfsc: Fix a UAF vulnerability " Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 098/183] net_sched: ets: Fix double list add " Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 099/183] net_sched: qfq: " Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 100/183] ice: Dont check device type when checking GNSS presence Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 101/183] ice: Remove unnecessary ice_is_e8xx() functions Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 102/183] ice: fix Get Tx Topology AQ command error on E830 Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 103/183] ice: Check VF VSI Pointer Value in ice_vc_add_fdir_fltr() Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 104/183] idpf: fix offloads support for encapsulated packets Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 105/183] scsi: ufs: core: Remove redundant query_complete trace Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 106/183] drm/xe/guc: Fix capture of steering registers Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 107/183] pinctrl: qcom: Fix PINGROUP definition for sm8750 Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 108/183] ALSA: ump: Fix buffer overflow at UMP SysEx message conversion Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 109/183] nvme-pci: fix queue unquiesce check on slot_reset Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 110/183] drm/tests: shmem: Fix memleak Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 111/183] drm/mipi-dbi: Fix blanking for non-16 bit formats Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 112/183] net: dlink: Correct endianness handling of led_mode Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 113/183] net: mdio: mux-meson-gxl: set reversed bit when using internal phy Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 114/183] idpf: fix potential memory leak on kcalloc() failure Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 115/183] idpf: protect shutdown from reset Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 116/183] igc: fix lock order in igc_ptp_reset Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 117/183] net: ethernet: mtk_eth_soc: fix SER panic with 4GB+ RAM Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 118/183] net: dsa: felix: fix broken taprio gate states after clock jump Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 119/183] net: ipv6: fix UDPv6 GSO segmentation with NAT Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 120/183] ALSA: hda/realtek: Fix built-mic regression on other ASUS models Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 121/183] bnxt_en: Fix error handling path in bnxt_init_chip() Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 122/183] bnxt_en: Fix ethtool selftest output in one of the failure cases Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 123/183] bnxt_en: Add missing skb_mark_for_recycle() in bnxt_rx_vlan() Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 124/183] bnxt_en: call pci_alloc_irq_vectors() after bnxt_reserve_rings() Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 125/183] bnxt_en: Fix coredump logic to free allocated buffer Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 126/183] bnxt_en: Fix out-of-bound memcpy() during ethtool -w Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 127/183] bnxt_en: Fix ethtool -d byte order for 32-bit values Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 128/183] nvme-tcp: fix premature queue removal and I/O failover Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 129/183] nvme-tcp: select CONFIG_TLS from CONFIG_NVME_TCP_TLS Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 130/183] nvmet-tcp: select CONFIG_TLS from CONFIG_NVME_TARGET_TCP_TLS Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 131/183] ASoC: stm32: sai: skip useless iterations on kernel rate loop Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 132/183] ASoC: stm32: sai: add a check on minimal kernel frequency Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 133/183] ASoC: simple-card-utils: Fix pointer check in graph_util_parse_link_direction Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 134/183] bnxt_en: fix module unload sequence Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 135/183] net: use sock_gen_put() when sk_state is TCP_TIME_WAIT Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 136/183] ptp: ocp: Fix NULL dereference in Adva board SMA sysfs operations Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 137/183] net: lan743x: Fix memleak issue when GSO enabled Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 138/183] net: fec: ERR007885 Workaround for conventional TX Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 139/183] octeon_ep: Fix host hang issue during device reboot Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 140/183] net: hns3: store rx VLAN tag offload state for VF Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 141/183] net: hns3: fix an interrupt residual problem Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 142/183] net: hns3: fixed debugfs tm_qset size Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 143/183] net: hns3: defer calling ptp_clock_register() Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 144/183] net: vertexcom: mse102x: Fix possible stuck of SPI interrupt Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 145/183] net: vertexcom: mse102x: Fix LEN_MASK Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 146/183] net: vertexcom: mse102x: Add range check for CMD_RTS Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 147/183] net: vertexcom: mse102x: Fix RX error handling Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 148/183] mm, slab: clean up slab->obj_exts always Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 149/183] accel/ivpu: Abort all jobs after command queue unregister Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 150/183] accel/ivpu: Fix locking order in ivpu_job_submit Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 151/183] accel/ivpu: Add handling of VPU_JSM_STATUS_MVNCI_CONTEXT_VIOLATION_HW Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 152/183] drm/xe: Invalidate L3 read-only cachelines for geometry streams too Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 153/183] platform/x86: alienware-wmi-wmax: Add support for Alienware m15 R7 Greg Kroah-Hartman
2025-05-07 18:39 ` [PATCH 6.14 154/183] ublk: add helper of ublk_need_map_io() Greg Kroah-Hartman
2025-05-07 18:40 ` [PATCH 6.14 155/183] ublk: properly serialize all FETCH_REQs Greg Kroah-Hartman
2025-05-07 18:40 ` [PATCH 6.14 156/183] ublk: move device reset into ublk_ch_release() Greg Kroah-Hartman
2025-05-07 18:40 ` Greg Kroah-Hartman [this message]
2025-05-07 18:40 ` [PATCH 6.14 158/183] ublk: remove __ublk_quiesce_dev() Greg Kroah-Hartman
2025-05-07 18:40 ` [PATCH 6.14 159/183] ublk: simplify aborting ublk request Greg Kroah-Hartman
2025-05-07 18:40 ` [PATCH 6.14 160/183] ublk: fix race between io_uring_cmd_complete_in_task and ublk_cancel_cmd Greg Kroah-Hartman
2025-05-07 18:40 ` [PATCH 6.14 161/183] sch_htb: make htb_qlen_notify() idempotent Greg Kroah-Hartman
2025-05-07 18:40 ` [PATCH 6.14 162/183] sch_drr: make drr_qlen_notify() idempotent Greg Kroah-Hartman
2025-05-07 18:40 ` [PATCH 6.14 163/183] sch_hfsc: make hfsc_qlen_notify() idempotent Greg Kroah-Hartman
2025-05-07 18:40 ` [PATCH 6.14 164/183] sch_qfq: make qfq_qlen_notify() idempotent Greg Kroah-Hartman
2025-05-07 18:40 ` [PATCH 6.14 165/183] sch_ets: make est_qlen_notify() idempotent Greg Kroah-Hartman
2025-05-07 18:40 ` [PATCH 6.14 166/183] firmware: arm_scmi: Balance device refcount when destroying devices Greg Kroah-Hartman
2025-05-07 18:40 ` [PATCH 6.14 167/183] firmware: arm_ffa: Skip Rx buffer ownership release if not acquired Greg Kroah-Hartman
2025-05-07 18:40 ` [PATCH 6.14 168/183] arm64: dts: imx95: Correct the range of PCIe app-reg region Greg Kroah-Hartman
2025-05-07 18:40 ` [PATCH 6.14 169/183] ARM: dts: opos6ul: add ksz8081 phy properties Greg Kroah-Hartman
2025-05-07 18:40 ` [PATCH 6.14 170/183] arm64: dts: st: Adjust interrupt-controller for stm32mp25 SoCs Greg Kroah-Hartman
2025-05-07 18:40 ` [PATCH 6.14 171/183] arm64: dts: st: Use 128kB size for aliased GIC400 register access on " Greg Kroah-Hartman
2025-05-07 18:40 ` [PATCH 6.14 172/183] block: introduce zone capacity helper Greg Kroah-Hartman
2025-05-07 18:40 ` [PATCH 6.14 173/183] btrfs: zoned: skip reporting zone for new block group Greg Kroah-Hartman
2025-05-07 18:40 ` [PATCH 6.14 174/183] kernel: param: rename locate_module_kobject Greg Kroah-Hartman
2025-05-07 18:40 ` [PATCH 6.14 175/183] kernel: globalize lookup_or_create_module_kobject() Greg Kroah-Hartman
2025-05-07 18:40 ` [PATCH 6.14 176/183] drivers: base: handle module_kobject creation Greg Kroah-Hartman
2025-05-07 18:40 ` [PATCH 6.14 177/183] btrfs: expose per-inode stable writes flag Greg Kroah-Hartman
2025-05-07 18:40 ` [PATCH 6.14 178/183] btrfs: pass struct btrfs_inode to btrfs_read_locked_inode() Greg Kroah-Hartman
2025-05-07 18:40 ` [PATCH 6.14 179/183] btrfs: pass struct btrfs_inode to btrfs_iget_locked() Greg Kroah-Hartman
2025-05-07 18:40 ` [PATCH 6.14 180/183] btrfs: fix the inode leak in btrfs_iget() Greg Kroah-Hartman
2025-05-07 18:40 ` [PATCH 6.14 181/183] drm/amd/display: Add scoped mutexes for amdgpu_dm_dhcp Greg Kroah-Hartman
2025-05-07 18:40 ` [PATCH 6.14 182/183] drm/amd/display: Fix slab-use-after-free in hdcp Greg Kroah-Hartman
2025-05-07 18:40 ` [PATCH 6.14 183/183] bcachefs: Change btree_insert_node() assertion to error Greg Kroah-Hartman
2025-05-07 20:58 ` [PATCH 6.14 000/183] 6.14.6-rc1 review Ronald Warsow
2025-05-08 1:46 ` Justin Forbes
2025-05-08 6:11 ` Naresh Kamboju
2025-05-08 8:38 ` Luna Jernberg
2025-05-08 9:45 ` Jon Hunter
2025-05-08 12:12 ` Takeshi Ogasawara
2025-05-08 13:37 ` Miguel Ojeda
2025-05-08 14:24 ` Mark Brown
2025-05-08 14:47 ` Shuah Khan
2025-05-08 15:49 ` Peter Schneider
2025-05-08 20:37 ` Florian Fainelli
2025-05-09 7:48 ` Ron Economos
2025-05-09 8:41 ` Christian Heusel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250507183831.220986208@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=axboe@kernel.dk \
--cc=ming.lei@redhat.com \
--cc=patches@lists.linux.dev \
--cc=stable@vger.kernel.org \
--cc=ushankar@purestorage.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox