From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org, Nix <nix@esperi.org.uk>,
NeilBrown <neilb@suse.com>, Shaohua Li <shli@fb.com>
Subject: [PATCH 4.12 076/196] md: fix deadlock between mddev_suspend() and md_write_start()
Date: Tue, 25 Jul 2017 12:21:15 -0700 [thread overview]
Message-ID: <20170725192050.398609677@linuxfoundation.org> (raw)
In-Reply-To: <20170725192046.422343510@linuxfoundation.org>
4.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: NeilBrown <neilb@suse.com>
commit cc27b0c78c79680d128dbac79de0d40556d041bb upstream.
If mddev_suspend() races with md_write_start() we can deadlock
with mddev_suspend() waiting for the request that is currently
in md_write_start() to complete the ->make_request() call,
and md_write_start() waiting for the metadata to be updated
to mark the array as 'dirty'.
As metadata updates done by md_check_recovery() only happen then
the mddev_lock() can be claimed, and as mddev_suspend() is often
called with the lock held, these threads wait indefinitely for each
other.
We fix this by having md_write_start() abort if mddev_suspend()
is happening, and ->make_request() aborts if md_write_start()
aborted.
md_make_request() can detect this abort, decrease the ->active_io
count, and wait for mddev_suspend().
Reported-by: Nix <nix@esperi.org.uk>
Fix: 68866e425be2(MD: no sync IO while suspended)
Signed-off-by: NeilBrown <neilb@suse.com>
Signed-off-by: Shaohua Li <shli@fb.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/md/faulty.c | 5 +++--
drivers/md/linear.c | 7 ++++---
drivers/md/md.c | 22 +++++++++++++++++-----
drivers/md/md.h | 4 ++--
drivers/md/multipath.c | 8 ++++----
drivers/md/raid0.c | 7 ++++---
drivers/md/raid1.c | 11 +++++++----
drivers/md/raid10.c | 10 ++++++----
drivers/md/raid5.c | 17 +++++++++--------
9 files changed, 56 insertions(+), 35 deletions(-)
--- a/drivers/md/faulty.c
+++ b/drivers/md/faulty.c
@@ -170,7 +170,7 @@ static void add_sector(struct faulty_con
conf->nfaults = n+1;
}
-static void faulty_make_request(struct mddev *mddev, struct bio *bio)
+static bool faulty_make_request(struct mddev *mddev, struct bio *bio)
{
struct faulty_conf *conf = mddev->private;
int failit = 0;
@@ -182,7 +182,7 @@ static void faulty_make_request(struct m
* just fail immediately
*/
bio_io_error(bio);
- return;
+ return true;
}
if (check_sector(conf, bio->bi_iter.bi_sector,
@@ -224,6 +224,7 @@ static void faulty_make_request(struct m
bio->bi_bdev = conf->rdev->bdev;
generic_make_request(bio);
+ return true;
}
static void faulty_status(struct seq_file *seq, struct mddev *mddev)
--- a/drivers/md/linear.c
+++ b/drivers/md/linear.c
@@ -245,7 +245,7 @@ static void linear_free(struct mddev *md
kfree(conf);
}
-static void linear_make_request(struct mddev *mddev, struct bio *bio)
+static bool linear_make_request(struct mddev *mddev, struct bio *bio)
{
char b[BDEVNAME_SIZE];
struct dev_info *tmp_dev;
@@ -254,7 +254,7 @@ static void linear_make_request(struct m
if (unlikely(bio->bi_opf & REQ_PREFLUSH)) {
md_flush_request(mddev, bio);
- return;
+ return true;
}
tmp_dev = which_dev(mddev, bio_sector);
@@ -292,7 +292,7 @@ static void linear_make_request(struct m
mddev_check_write_zeroes(mddev, bio);
generic_make_request(bio);
}
- return;
+ return true;
out_of_bounds:
pr_err("md/linear:%s: make_request: Sector %llu out of bounds on dev %s: %llu sectors, offset %llu\n",
@@ -302,6 +302,7 @@ out_of_bounds:
(unsigned long long)tmp_dev->rdev->sectors,
(unsigned long long)start_sector);
bio_io_error(bio);
+ return true;
}
static void linear_status (struct seq_file *seq, struct mddev *mddev)
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -277,7 +277,7 @@ static blk_qc_t md_make_request(struct r
bio_endio(bio);
return BLK_QC_T_NONE;
}
- smp_rmb(); /* Ensure implications of 'active' are visible */
+check_suspended:
rcu_read_lock();
if (mddev->suspended) {
DEFINE_WAIT(__wait);
@@ -302,7 +302,11 @@ static blk_qc_t md_make_request(struct r
sectors = bio_sectors(bio);
/* bio could be mergeable after passing to underlayer */
bio->bi_opf &= ~REQ_NOMERGE;
- mddev->pers->make_request(mddev, bio);
+ if (!mddev->pers->make_request(mddev, bio)) {
+ atomic_dec(&mddev->active_io);
+ wake_up(&mddev->sb_wait);
+ goto check_suspended;
+ }
cpu = part_stat_lock();
part_stat_inc(cpu, &mddev->gendisk->part0, ios[rw]);
@@ -327,6 +331,7 @@ void mddev_suspend(struct mddev *mddev)
if (mddev->suspended++)
return;
synchronize_rcu();
+ wake_up(&mddev->sb_wait);
wait_event(mddev->sb_wait, atomic_read(&mddev->active_io) == 0);
mddev->pers->quiesce(mddev, 1);
@@ -7950,12 +7955,14 @@ EXPORT_SYMBOL(md_done_sync);
* If we need to update some array metadata (e.g. 'active' flag
* in superblock) before writing, schedule a superblock update
* and wait for it to complete.
+ * A return value of 'false' means that the write wasn't recorded
+ * and cannot proceed as the array is being suspend.
*/
-void md_write_start(struct mddev *mddev, struct bio *bi)
+bool md_write_start(struct mddev *mddev, struct bio *bi)
{
int did_change = 0;
if (bio_data_dir(bi) != WRITE)
- return;
+ return true;
BUG_ON(mddev->ro == 1);
if (mddev->ro == 2) {
@@ -7987,7 +7994,12 @@ void md_write_start(struct mddev *mddev,
if (did_change)
sysfs_notify_dirent_safe(mddev->sysfs_state);
wait_event(mddev->sb_wait,
- !test_bit(MD_SB_CHANGE_PENDING, &mddev->sb_flags));
+ !test_bit(MD_SB_CHANGE_PENDING, &mddev->sb_flags) && !mddev->suspended);
+ if (test_bit(MD_SB_CHANGE_PENDING, &mddev->sb_flags)) {
+ percpu_ref_put(&mddev->writes_pending);
+ return false;
+ }
+ return true;
}
EXPORT_SYMBOL(md_write_start);
--- a/drivers/md/md.h
+++ b/drivers/md/md.h
@@ -510,7 +510,7 @@ struct md_personality
int level;
struct list_head list;
struct module *owner;
- void (*make_request)(struct mddev *mddev, struct bio *bio);
+ bool (*make_request)(struct mddev *mddev, struct bio *bio);
int (*run)(struct mddev *mddev);
void (*free)(struct mddev *mddev, void *priv);
void (*status)(struct seq_file *seq, struct mddev *mddev);
@@ -649,7 +649,7 @@ extern void md_wakeup_thread(struct md_t
extern void md_check_recovery(struct mddev *mddev);
extern void md_reap_sync_thread(struct mddev *mddev);
extern int mddev_init_writes_pending(struct mddev *mddev);
-extern void md_write_start(struct mddev *mddev, struct bio *bi);
+extern bool md_write_start(struct mddev *mddev, struct bio *bi);
extern void md_write_inc(struct mddev *mddev, struct bio *bi);
extern void md_write_end(struct mddev *mddev);
extern void md_done_sync(struct mddev *mddev, int blocks, int ok);
--- a/drivers/md/multipath.c
+++ b/drivers/md/multipath.c
@@ -106,7 +106,7 @@ static void multipath_end_request(struct
rdev_dec_pending(rdev, conf->mddev);
}
-static void multipath_make_request(struct mddev *mddev, struct bio * bio)
+static bool multipath_make_request(struct mddev *mddev, struct bio * bio)
{
struct mpconf *conf = mddev->private;
struct multipath_bh * mp_bh;
@@ -114,7 +114,7 @@ static void multipath_make_request(struc
if (unlikely(bio->bi_opf & REQ_PREFLUSH)) {
md_flush_request(mddev, bio);
- return;
+ return true;
}
mp_bh = mempool_alloc(conf->pool, GFP_NOIO);
@@ -126,7 +126,7 @@ static void multipath_make_request(struc
if (mp_bh->path < 0) {
bio_io_error(bio);
mempool_free(mp_bh, conf->pool);
- return;
+ return true;
}
multipath = conf->multipaths + mp_bh->path;
@@ -141,7 +141,7 @@ static void multipath_make_request(struc
mddev_check_writesame(mddev, &mp_bh->bio);
mddev_check_write_zeroes(mddev, &mp_bh->bio);
generic_make_request(&mp_bh->bio);
- return;
+ return true;
}
static void multipath_status(struct seq_file *seq, struct mddev *mddev)
--- a/drivers/md/raid0.c
+++ b/drivers/md/raid0.c
@@ -548,7 +548,7 @@ static void raid0_handle_discard(struct
bio_endio(bio);
}
-static void raid0_make_request(struct mddev *mddev, struct bio *bio)
+static bool raid0_make_request(struct mddev *mddev, struct bio *bio)
{
struct strip_zone *zone;
struct md_rdev *tmp_dev;
@@ -559,12 +559,12 @@ static void raid0_make_request(struct md
if (unlikely(bio->bi_opf & REQ_PREFLUSH)) {
md_flush_request(mddev, bio);
- return;
+ return true;
}
if (unlikely((bio_op(bio) == REQ_OP_DISCARD))) {
raid0_handle_discard(mddev, bio);
- return;
+ return true;
}
bio_sector = bio->bi_iter.bi_sector;
@@ -599,6 +599,7 @@ static void raid0_make_request(struct md
mddev_check_writesame(mddev, bio);
mddev_check_write_zeroes(mddev, bio);
generic_make_request(bio);
+ return true;
}
static void raid0_status(struct seq_file *seq, struct mddev *mddev)
--- a/drivers/md/raid1.c
+++ b/drivers/md/raid1.c
@@ -1321,7 +1321,6 @@ static void raid1_write_request(struct m
* Continue immediately if no resync is active currently.
*/
- md_write_start(mddev, bio); /* wait on superblock update early */
if ((bio_end_sector(bio) > mddev->suspend_lo &&
bio->bi_iter.bi_sector < mddev->suspend_hi) ||
@@ -1553,13 +1552,13 @@ static void raid1_write_request(struct m
wake_up(&conf->wait_barrier);
}
-static void raid1_make_request(struct mddev *mddev, struct bio *bio)
+static bool raid1_make_request(struct mddev *mddev, struct bio *bio)
{
sector_t sectors;
if (unlikely(bio->bi_opf & REQ_PREFLUSH)) {
md_flush_request(mddev, bio);
- return;
+ return true;
}
/*
@@ -1574,8 +1573,12 @@ static void raid1_make_request(struct md
if (bio_data_dir(bio) == READ)
raid1_read_request(mddev, bio, sectors, NULL);
- else
+ else {
+ if (!md_write_start(mddev,bio))
+ return false;
raid1_write_request(mddev, bio, sectors);
+ }
+ return true;
}
static void raid1_status(struct seq_file *seq, struct mddev *mddev)
--- a/drivers/md/raid10.c
+++ b/drivers/md/raid10.c
@@ -1303,8 +1303,6 @@ static void raid10_write_request(struct
sector_t sectors;
int max_sectors;
- md_write_start(mddev, bio);
-
/*
* Register the new request and wait if the reconstruction
* thread has put up a bar for new requests.
@@ -1525,7 +1523,7 @@ static void __make_request(struct mddev
raid10_write_request(mddev, bio, r10_bio);
}
-static void raid10_make_request(struct mddev *mddev, struct bio *bio)
+static bool raid10_make_request(struct mddev *mddev, struct bio *bio)
{
struct r10conf *conf = mddev->private;
sector_t chunk_mask = (conf->geo.chunk_mask & conf->prev.chunk_mask);
@@ -1534,9 +1532,12 @@ static void raid10_make_request(struct m
if (unlikely(bio->bi_opf & REQ_PREFLUSH)) {
md_flush_request(mddev, bio);
- return;
+ return true;
}
+ if (!md_write_start(mddev, bio))
+ return false;
+
/*
* If this request crosses a chunk boundary, we need to split
* it.
@@ -1553,6 +1554,7 @@ static void raid10_make_request(struct m
/* In case raid10d snuck in to freeze_array */
wake_up(&conf->wait_barrier);
+ return true;
}
static void raid10_status(struct seq_file *seq, struct mddev *mddev)
--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -5479,7 +5479,6 @@ static void make_discard_request(struct
last_sector = bi->bi_iter.bi_sector + (bi->bi_iter.bi_size>>9);
bi->bi_next = NULL;
- md_write_start(mddev, bi);
stripe_sectors = conf->chunk_sectors *
(conf->raid_disks - conf->max_degraded);
@@ -5549,11 +5548,10 @@ static void make_discard_request(struct
release_stripe_plug(mddev, sh);
}
- md_write_end(mddev);
bio_endio(bi);
}
-static void raid5_make_request(struct mddev *mddev, struct bio * bi)
+static bool raid5_make_request(struct mddev *mddev, struct bio * bi)
{
struct r5conf *conf = mddev->private;
int dd_idx;
@@ -5569,10 +5567,10 @@ static void raid5_make_request(struct md
int ret = r5l_handle_flush_request(conf->log, bi);
if (ret == 0)
- return;
+ return true;
if (ret == -ENODEV) {
md_flush_request(mddev, bi);
- return;
+ return true;
}
/* ret == -EAGAIN, fallback */
/*
@@ -5582,6 +5580,8 @@ static void raid5_make_request(struct md
do_flush = bi->bi_opf & REQ_PREFLUSH;
}
+ if (!md_write_start(mddev, bi))
+ return false;
/*
* If array is degraded, better not do chunk aligned read because
* later we might have to read it again in order to reconstruct
@@ -5591,18 +5591,18 @@ static void raid5_make_request(struct md
mddev->reshape_position == MaxSector) {
bi = chunk_aligned_read(mddev, bi);
if (!bi)
- return;
+ return true;
}
if (unlikely(bio_op(bi) == REQ_OP_DISCARD)) {
make_discard_request(mddev, bi);
- return;
+ md_write_end(mddev);
+ return true;
}
logical_sector = bi->bi_iter.bi_sector & ~((sector_t)STRIPE_SECTORS-1);
last_sector = bio_end_sector(bi);
bi->bi_next = NULL;
- md_write_start(mddev, bi);
prepare_to_wait(&conf->wait_for_overlap, &w, TASK_UNINTERRUPTIBLE);
for (;logical_sector < last_sector; logical_sector += STRIPE_SECTORS) {
@@ -5743,6 +5743,7 @@ static void raid5_make_request(struct md
if (rw == WRITE)
md_write_end(mddev);
bio_endio(bi);
+ return true;
}
static sector_t raid5_size(struct mddev *mddev, sector_t sectors, int raid_disks);
next prev parent reply other threads:[~2017-07-25 19:24 UTC|newest]
Thread overview: 189+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-25 19:19 [PATCH 4.12 000/196] 4.12.4-stable review Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 001/196] disable new gcc-7.1.1 warnings for now Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 002/196] [media] ir-core: fix gcc-7 warning on bool arithmetic Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 003/196] [media] s5p-jpeg: dont return a random width/height Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 004/196] thermal: max77620: fix device-node reference imbalance Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 005/196] thermal: cpu_cooling: Avoid accessing potentially freed structures Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 006/196] ath9k: fix tx99 use after free Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 007/196] ath9k: fix tx99 bus error Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 008/196] ath9k: fix an invalid pointer dereference in ath9k_rng_stop() Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 009/196] iwlwifi: mvm: fix the recovery flow while connecting Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 010/196] NFC: fix broken device allocation Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 011/196] NFC: nfcmrvl_uart: add missing tty-device sanity check Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 012/196] NFC: nfcmrvl: do not use device-managed resources Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 013/196] NFC: nfcmrvl: use nfc-device for firmware download Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 014/196] NFC: nfcmrvl: fix firmware-management initialisation Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 015/196] nfc: Ensure presence of required attributes in the activate_target handler Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 016/196] nfc: Fix the sockaddr length sanitization in llcp_sock_connect Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 017/196] NFC: Add sockaddr length checks before accessing sa_family in bind handlers Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 018/196] perf intel-pt: Move decoder error setting into one condition Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 019/196] perf intel-pt: Improve sample timestamp Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 020/196] perf intel-pt: Fix missing stack clear Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 021/196] perf intel-pt: Ensure IP is zero when state is INTEL_PT_STATE_NO_IP Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 022/196] perf intel-pt: Fix last_ip usage Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 023/196] perf intel-pt: Ensure never to set last_ip when packet count is zero Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 024/196] perf intel-pt: Use FUP always when scanning for an IP Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 025/196] perf intel-pt: Clear FUP flag on error Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 026/196] Bluetooth: use constant time memory comparison for secret values Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 027/196] wlcore: fix 64K page support Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 028/196] pstore: Dont warn if data is uncompressed and type is not PSTORE_TYPE_DMESG Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 029/196] mwifiex: fixup error cases in mwifiex_add_virtual_intf() Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 030/196] Btrfs: fix invalid extent maps due to hole punching Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 031/196] btrfs: Dont clear SGID when inheriting ACLs Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 032/196] Btrfs: incremental send, fix invalid memory access Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 033/196] igb: Explicitly select page 0 at initialization Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 034/196] spi: atmel: fix corrupted data issue on SAM9 family SoCs Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 035/196] ASoC: zx-i2s: flip I2S master/slave mode Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 036/196] ASoC: compress: Derive substream from stream based on direction Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 037/196] ASoC: atmel: tse850: fix off-by-one in the "ANA" enumeration count Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 038/196] PM / Domains: Fix unsafe iteration over modified list of device links Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 039/196] PM / Domains: Fix unsafe iteration over modified list of domain providers Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 040/196] PM / Domains: Fix unsafe iteration over modified list of domains Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 041/196] scsi: ses: do not add a device to an enclosure if enclosure_add_links() fails Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 042/196] scsi: virtio_scsi: let host do exception handling Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 043/196] scsi: qla2xxx: Allow ABTS, PURX, RIDA on ATIOQ for ISP83XX/27XX Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 044/196] scsi: Add STARGET_CREATED_REMOVE state to scsi_target_state Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 045/196] scsi: Avoid that scsi_exit_rq() triggers a use-after-free Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 046/196] iscsi-target: Add login_keys_workaround attribute for non RFC initiators Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 047/196] xen/scsiback: Fix a TMR related use-after-free Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 048/196] scsi: virtio_scsi: always read VPD pages for multiqueue too Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 049/196] powerpc/mm/radix: Only add X for pages overlapping kernel text Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 050/196] powerpc/pseries: Fix passing of pp0 in updatepp() and updateboltedpp() Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 051/196] powerpc/mm/radix: Fix execute permissions for interrupt_vectors Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 052/196] powerpc/64: Fix atomic64_inc_not_zero() to return an int Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 053/196] powerpc: Fix emulation of mcrf in emulate_step() Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 054/196] powerpc: Fix emulation of mfocrf " Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 055/196] powerpc/asm: Mark cr0 as clobbered in mftb() Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 056/196] powerpc/mm/radix: Properly clear process table entry Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 057/196] powerpc/perf: Fix SDAR_MODE value for continous sampling on Power9 Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 058/196] xen/x86: fix cpu hotplug Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 059/196] PCI: vmd: Move SRCU cleanup after bus, child device removal Greg Kroah-Hartman
2017-07-25 19:20 ` [PATCH 4.12 060/196] PCI: Work around poweroff & suspend-to-RAM issue on Macbook Pro 11 Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 061/196] PCI: rockchip: Use normal register bank for config accessors Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 062/196] PCI/PM: Restore the status of PCI devices across hibernation Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 063/196] PCI/MSI: Ignore affinity if pre/post vector count is more than min_vecs Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 064/196] usb: xhci: fix spinlock recursion for USB2 test mode Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 065/196] xhci: fix memleak in xhci_run() Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 066/196] xhci: fix 20000ms port resume timeout Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 067/196] xhci: Fix NULL pointer dereference when cleaning up streams for removed host Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 068/196] xhci: Bad Ethernet performance plugged in ASM1042A host Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 069/196] [media] mxl111sf: Fix driver to use heap allocate buffers for USB messages Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 070/196] usb: storage: return on error to avoid a null pointer dereference Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 071/196] USB: cdc-acm: add device-id for quirky printer Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 072/196] usb: renesas_usbhs: fix usbhsc_resume() for !USBHSF_RUNTIME_PWCTRL Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 073/196] usb: renesas_usbhs: gadget: disable all eps when the driver stops Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 074/196] HID: multitouch: do not blindly set EV_KEY or EV_ABS bits Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 075/196] md: dont use flush_signals in userspace processes Greg Kroah-Hartman
2017-07-25 19:21 ` Greg Kroah-Hartman [this message]
2017-07-25 19:21 ` [PATCH 4.12 078/196] [media] cx88: Fix regression in initial video standard setting Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 080/196] tools/testing/nvdimm: fix nfit_test buffer overflow Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 081/196] libnvdimm, btt: fix btt_rw_page not returning errors Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 082/196] libnvdimm: fix the clear-error check in nsio_rw_bytes Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 083/196] libnvdimm: fix badblock range handling of ARS range Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 084/196] ext2: Dont clear SGID when inheriting ACLs Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 085/196] dm raid: stop using BUG() in __rdev_sectors() Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 086/196] Raid5 should update rdev->sectors after reshape Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 087/196] s390/syscalls: Fix out of bounds arguments access Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 088/196] drm/amdgpu/gfx8: drop per-APU CU limits Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 097/196] drm/etnaviv: Expose our reservation object when exporting a dmabuf Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 098/196] ipmi: use rcu lock around call to intf->handlers->sender() Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 099/196] ipmi:ssif: Add missing unlock in error branch Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 100/196] xfs: Dont clear SGID when inheriting ACLs Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 101/196] CIFS: Reconnect expired SMB sessions Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 102/196] f2fs: load inodes flag from disk Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 103/196] f2fs: wake up all waiters in f2fs_submit_discard_endio Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 104/196] f2fs: sanity check checkpoint segno and blkoff Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 105/196] f2fs: try to freeze in gc and discard threads Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 106/196] f2fs: Do not issue small discards in LFS mode Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 107/196] f2fs: sanity check size of nat and sit cache Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 108/196] f2fs: use spin_{,un}lock_irq{save,restore} Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 109/196] f2fs: Dont clear SGID when inheriting ACLs Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 110/196] serial: st-asc: Potential error pointer dereference Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 111/196] serial: sh-sci: Uninitialized variables in sysfs files Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 112/196] ovl: mark parent impure on ovl_link() Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 113/196] ovl: fix random return value on mount Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 114/196] drm/amd/powerplay: fix memory leak in cz_hwmgr backend Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 116/196] vfio: Fix group release deadlock Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 117/196] vfio: New external user group/file match Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 118/196] vfio: Remove unnecessary uses of vfio_container.group_lock Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 119/196] nvme-rdma: remove race conditions from IB signalling Greg Kroah-Hartman
2017-07-25 19:21 ` [PATCH 4.12 120/196] ftrace: Fix uninitialized variable in match_records() Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 121/196] iommu/arm-smmu: Plumb in new ACPI identifiers Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 122/196] drm/i915/gvt: Fix inconsistent locks holding sequence Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 123/196] drm/atomic: Add missing drm_atomic_state_clear to atomic_remove_fb Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 124/196] MIPS: Fix mips_atomic_set() retry condition Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 125/196] MIPS: Fix mips_atomic_set() with EVA Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 126/196] MIPS: Negate error syscall return in trace Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 127/196] mtd: nand: tango: Fix incorrect use of SEQIN command Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 128/196] ubifs: Correctly evict xattr inodes Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 129/196] ubifs: Dont leak kernel memory to the MTD Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 130/196] ubifs: Dont encrypt special files on creation Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 131/196] ubifs: Set double hash cookie also for RENAME_EXCHANGE Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 132/196] ACPI / EC: Drop EC noirq hooks to fix a regression Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 133/196] Revert "ACPI / EC: Enable event freeze mode..." " Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 134/196] x86/acpi: Prevent out of bound access caused by broken ACPI tables Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 135/196] x86/ioapic: Pass the correct data to unmask_ioapic_irq() Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 136/196] MIPS: Fix MIPS I ISA /proc/cpuinfo reporting Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 137/196] MIPS: Save static registers before sysmips Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 138/196] MIPS: Actually decode JALX in `__compute_return_epc_for_insn Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 139/196] MIPS: Fix unaligned PC interpretation in `compute_return_epc Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 140/196] MIPS: math-emu: Prevent wrong ISA mode instruction emulation Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 141/196] MIPS: Send SIGILL for BPOSGE32 in `__compute_return_epc_for_insn Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 142/196] MIPS: Rename `sigill_r6 to `sigill_r2r6 " Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 143/196] MIPS: Send SIGILL for linked branches " Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 144/196] MIPS: Send SIGILL for R6 " Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 145/196] MIPS: Fix a typo: s/preset/present/ in r2-to-r6 emulation error message Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 146/196] Input: i8042 - fix crash at boot time Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 147/196] IB/iser: Fix connection teardown race condition Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 148/196] IB/core: Namespace is mandatory input for address resolution Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 149/196] sunrpc: use constant time memory comparison for mac Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 150/196] net/sunrpc/xprt_sock: fix regression in connection error reporting Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 151/196] NFS: Fix initialization of nfs_page_array->npages Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 152/196] PNFS fix EACCESS on commit to DS handling Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 153/196] NFS: only invalidate dentrys that are clearly invalid Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 154/196] udf: Fix races with i_size changes during readpage Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 155/196] udf: Fix deadlock between writeback and udf_setsize() Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 156/196] target: Fix COMPARE_AND_WRITE caw_sem leak during se_cmd quiesce Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 157/196] iser-target: Avoid isert_conn->cm_id dereference in isert_login_recv_done Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 159/196] perf/core: Fix scheduling regression of pinned groups Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 160/196] Revert "perf/core: Drop kernel samples even though :u is specified" Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 161/196] staging: rtl8188eu: add TL-WN722N v2 support Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 163/196] staging: sm750fb: avoid conflicting vesafb Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 164/196] staging: lustre: ko2iblnd: check copy_from_iter/copy_to_iter return code Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 165/196] ceph: fix race in concurrent readdir Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 166/196] RDMA/uverbs: Fix the check for port number Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 167/196] RDMA/core: Initialize port_num in qp_attr Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 168/196] drm/mst: Fix error handling during MST sideband message reception Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 169/196] drm/mst: Avoid dereferencing a NULL mstb in drm_dp_mst_handle_up_req() Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 170/196] drm/mst: Avoid processing partially received up/down message transactions Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 171/196] drm/i915: Make DP-MST connector info work Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 172/196] mlx5: Avoid that mlx5_ib_sg_to_klms() overflows the klms[] array Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 173/196] hfsplus: Dont clear SGID when inheriting ACLs Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 174/196] vtime, sched/cputime: Remove vtime_account_user() Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 175/196] sched/cputime: Always set tsk->vtime_snap_whence after accounting vtime Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 176/196] sched/cputime: Rename vtime fields Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 177/196] sched/cputime: Move the vtime task fields to their own struct Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 178/196] sched/cputime: Accumulate vtime on top of nsec clocksource Greg Kroah-Hartman
2017-07-26 14:21 ` Mel Gorman
2017-07-26 19:55 ` Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 179/196] sched/fair: Fix load_balance() affinity redo path Greg Kroah-Hartman
2017-07-25 19:22 ` [PATCH 4.12 180/196] percpu_counter: Rename __percpu_counter_add to percpu_counter_add_batch Greg Kroah-Hartman
2017-07-25 19:23 ` [PATCH 4.12 181/196] writeback: rework wb_[dec|inc]_stat family of functions Greg Kroah-Hartman
2017-07-25 19:23 ` [PATCH 4.12 182/196] kernel/fork.c: virtually mapped stacks: do not disable interrupts Greg Kroah-Hartman
2017-07-25 19:23 ` [PATCH 4.12 183/196] acpi/nfit: Fix memory corruption/Unregister mce decoder on failure Greg Kroah-Hartman
2017-07-25 19:23 ` [PATCH 4.12 184/196] vmbus: re-enable channel tasklet Greg Kroah-Hartman
2017-07-25 19:23 ` [PATCH 4.12 185/196] cpufreq: intel_pstate: Correct the busy calculation for KNL Greg Kroah-Hartman
2017-07-25 19:23 ` [PATCH 4.12 186/196] spmi: Include OF based modalias in device uevent Greg Kroah-Hartman
2017-07-25 19:23 ` [PATCH 4.12 187/196] reiserfs: Dont clear SGID when inheriting ACLs Greg Kroah-Hartman
2017-07-25 19:23 ` [PATCH 4.12 188/196] device-dax: fix sysfs duplicate warnings Greg Kroah-Hartman
2017-07-25 19:23 ` [PATCH 4.12 189/196] drm/imx: parallel-display: Accept drm_of_find_panel_or_bridge failure Greg Kroah-Hartman
2017-07-25 19:23 ` [PATCH 4.12 190/196] PM / Domains: defer dev_pm_domain_set() until genpd->attach_dev succeeds if present Greg Kroah-Hartman
2017-07-25 19:23 ` [PATCH 4.12 191/196] tracing: Fix kmemleak in instance_rmdir Greg Kroah-Hartman
2017-07-25 19:23 ` [PATCH 4.12 192/196] drm/i915/fbdev: Check for existence of ifbdev->vma before operations Greg Kroah-Hartman
2017-07-25 19:23 ` [PATCH 4.12 193/196] drm/i915: Hold RPM wakelock while initializing OA buffer Greg Kroah-Hartman
2017-07-25 19:23 ` [PATCH 4.12 195/196] smp/hotplug: Move unparking of percpu threads to the control CPU Greg Kroah-Hartman
2017-07-25 19:23 ` [PATCH 4.12 196/196] smp/hotplug: Replace BUG_ON and react useful Greg Kroah-Hartman
2017-07-26 2:57 ` [PATCH 4.12 000/196] 4.12.4-stable review Guenter Roeck
2017-07-26 19:54 ` Greg Kroah-Hartman
2017-07-26 14:25 ` Shuah Khan
2017-07-26 16:20 ` Greg Kroah-Hartman
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=20170725192050.398609677@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=neilb@suse.com \
--cc=nix@esperi.org.uk \
--cc=shli@fb.com \
--cc=stable@vger.kernel.org \
/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;
as well as URLs for NNTP newsgroup(s).