Home Home > GIT Browse > openSUSE-15.1
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPetr Tesarik <ptesarik@suse.cz>2019-05-16 08:50:52 +0200
committerPetr Tesarik <ptesarik@suse.cz>2019-05-16 08:50:52 +0200
commitebb85b1bae224db837fa80b5da8a68dd1e7aedeb (patch)
tree2bb4ff161b3d6b3522cd4cd1f062f65d4060d2b4
parent0058b93f002e486a4ac65697983c01bd6e479c6d (diff)
parentfd1ec26a5a0d5abf86e8246cd1b7679fd6b91ef8 (diff)
Merge branch 'users/mwilck/SLE15-SP1-UPDATE/for-next' into SLE15-SP1-UPDATE
Pull block layer fixes from Martin Wilck
-rw-r--r--patches.fixes/Revert-block-unexport-DISK_EVENT_MEDIA_CHANGE-for.patch145
-rw-r--r--patches.fixes/Revert-ide-unexport-DISK_EVENT_MEDIA_CHANGE-for-i.patch73
-rw-r--r--patches.fixes/block-check_events-don-t-bother-with-events-if-un.patch99
-rw-r--r--patches.fixes/block-disk_events-introduce-event-flags.patch133
-rw-r--r--series.conf4
5 files changed, 454 insertions, 0 deletions
diff --git a/patches.fixes/Revert-block-unexport-DISK_EVENT_MEDIA_CHANGE-for.patch b/patches.fixes/Revert-block-unexport-DISK_EVENT_MEDIA_CHANGE-for.patch
new file mode 100644
index 0000000000..b4d0e660d1
--- /dev/null
+++ b/patches.fixes/Revert-block-unexport-DISK_EVENT_MEDIA_CHANGE-for.patch
@@ -0,0 +1,145 @@
+From 9ec1f4444e4f969bd5729ac031a3e5735d6664df Mon Sep 17 00:00:00 2001
+From: Martin Wilck <mwilck@suse.com>
+Date: Thu, 17 Jan 2019 23:05:00 +0100
+Subject: [PATCH v2 3/4] Revert "block: unexport DISK_EVENT_MEDIA_CHANGE for
+ legacy/fringe drivers"
+Patch-mainline: v5.2-rc1
+Git-commit: 773008f6fe0544aa28140ced0504cefba17381aa
+References: bsc#1110946, bsc#1119843
+
+This reverts commit 9fd097b14918875bd6f125ed699d7bbbba5893ee.
+
+Instead of leaving disk->events completely empty, we now export the supported
+events again, and tell the block layer not to forward events to user space by
+not setting DISK_EVENT_FLAG_UEVENT. This allows the block layer to distinguish
+between devices that for which events should be handled in kernel only, and
+devices which don't support any meda change events at all.
+
+Cc: Jiri Kosina <jikos@kernel.org>
+Cc: Tim Waugh <tim@cyberelk.net>
+Cc: Michal Simek <michal.simek@xilinx.com>
+Signed-off-by: Martin Wilck <mwilck@suse.com>
+---
+ drivers/block/DAC960.c | 1 +
+ drivers/block/amiflop.c | 1 +
+ drivers/block/ataflop.c | 1 +
+ drivers/block/floppy.c | 1 +
+ drivers/block/paride/pcd.c | 1 +
+ drivers/block/paride/pd.c | 1 +
+ drivers/block/paride/pf.c | 1 +
+ drivers/block/swim.c | 1 +
+ drivers/block/swim3.c | 1 +
+ drivers/block/xsysace.c | 1 +
+ drivers/cdrom/gdrom.c | 1 +
+ 11 files changed, 11 insertions(+)
+
+--- a/drivers/block/DAC960.c
++++ b/drivers/block/DAC960.c
+@@ -2543,6 +2543,7 @@ static bool DAC960_RegisterBlockDevice(D
+ disk->major = MajorNumber;
+ disk->first_minor = n << DAC960_MaxPartitionsBits;
+ disk->fops = &DAC960_BlockDeviceOperations;
++ disk->events = DISK_EVENT_MEDIA_CHANGE;
+ }
+ /*
+ Indicate the Block Device Registration completed successfully,
+--- a/drivers/block/amiflop.c
++++ b/drivers/block/amiflop.c
+@@ -1735,6 +1735,7 @@ static int __init fd_probe_drives(void)
+ disk->major = FLOPPY_MAJOR;
+ disk->first_minor = drive;
+ disk->fops = &floppy_fops;
++ disk->events = DISK_EVENT_MEDIA_CHANGE;
+ sprintf(disk->disk_name, "fd%d", drive);
+ disk->private_data = &unit[drive];
+ set_capacity(disk, 880*2);
+--- a/drivers/block/ataflop.c
++++ b/drivers/block/ataflop.c
+@@ -1970,6 +1970,7 @@ static int __init atari_floppy_init (voi
+ unit[i].disk->first_minor = i;
+ sprintf(unit[i].disk->disk_name, "fd%d", i);
+ unit[i].disk->fops = &floppy_fops;
++ unit[i].disk->events = DISK_EVENT_MEDIA_CHANGE;
+ unit[i].disk->private_data = &unit[i];
+ set_capacity(unit[i].disk, MAX_DISK_SIZE * 2);
+ add_disk(unit[i].disk);
+--- a/drivers/block/floppy.c
++++ b/drivers/block/floppy.c
+@@ -4540,6 +4540,7 @@ static int __init do_floppy_init(void)
+ disks[drive]->major = FLOPPY_MAJOR;
+ disks[drive]->first_minor = TOMINOR(drive);
+ disks[drive]->fops = &floppy_fops;
++ disks[drive]->events = DISK_EVENT_MEDIA_CHANGE;
+ sprintf(disks[drive]->disk_name, "fd%d", drive);
+
+ setup_timer(&motor_off_timer[drive], motor_off_callback, drive);
+--- a/drivers/block/paride/pcd.c
++++ b/drivers/block/paride/pcd.c
+@@ -329,6 +329,7 @@ static void pcd_init_units(void)
+ strcpy(disk->disk_name, cd->name); /* umm... */
+ disk->fops = &pcd_bdops;
+ disk->flags = GENHD_FL_BLOCK_EVENTS_ON_EXCL_WRITE;
++ disk->events = DISK_EVENT_MEDIA_CHANGE;
+ }
+ }
+
+--- a/drivers/block/paride/pd.c
++++ b/drivers/block/paride/pd.c
+@@ -854,6 +854,7 @@ static void pd_probe_drive(struct pd_uni
+ p->fops = &pd_fops;
+ p->major = major;
+ p->first_minor = (disk - pd) << PD_BITS;
++ p->events = DISK_EVENT_MEDIA_CHANGE;
+ disk->gd = p;
+ p->private_data = disk;
+ p->queue = blk_init_queue(do_pd_request, &pd_lock);
+--- a/drivers/block/paride/pf.c
++++ b/drivers/block/paride/pf.c
+@@ -304,6 +304,7 @@ static void __init pf_init_units(void)
+ disk->first_minor = unit;
+ strcpy(disk->disk_name, pf->name);
+ disk->fops = &pf_fops;
++ disk->events = DISK_EVENT_MEDIA_CHANGE;
+ if (!(*drives[unit])[D_PRT])
+ pf_drive_count++;
+ }
+--- a/drivers/block/swim.c
++++ b/drivers/block/swim.c
+@@ -875,6 +875,7 @@ static int swim_floppy_init(struct swim_
+ swd->unit[drive].disk->first_minor = drive;
+ sprintf(swd->unit[drive].disk->disk_name, "fd%d", drive);
+ swd->unit[drive].disk->fops = &floppy_fops;
++ swd->unit[drive].disk->events = DISK_EVENT_MEDIA_CHANGE;
+ swd->unit[drive].disk->private_data = &swd->unit[drive];
+ set_capacity(swd->unit[drive].disk, 2880);
+ add_disk(swd->unit[drive].disk);
+--- a/drivers/block/swim3.c
++++ b/drivers/block/swim3.c
+@@ -1242,6 +1242,7 @@ static int swim3_attach(struct macio_dev
+ disk->first_minor = index;
+ disk->fops = &floppy_fops;
+ disk->private_data = &floppy_states[index];
++ disk->events = DISK_EVENT_MEDIA_CHANGE;
+ disk->flags |= GENHD_FL_REMOVABLE;
+ sprintf(disk->disk_name, "fd%d", index);
+ set_capacity(disk, 2880);
+--- a/drivers/block/xsysace.c
++++ b/drivers/block/xsysace.c
+@@ -1005,6 +1005,7 @@ static int ace_setup(struct ace_device *
+ ace->gd->major = ace_major;
+ ace->gd->first_minor = ace->id * ACE_NUM_MINORS;
+ ace->gd->fops = &ace_fops;
++ ace->gd->events = DISK_EVENT_MEDIA_CHANGE;
+ ace->gd->queue = ace->queue;
+ ace->gd->private_data = ace;
+ snprintf(ace->gd->disk_name, 32, "xs%c", ace->id + 'a');
+--- a/drivers/cdrom/gdrom.c
++++ b/drivers/cdrom/gdrom.c
+@@ -807,6 +807,7 @@ static int probe_gdrom(struct platform_d
+ goto probe_fail_cdrom_register;
+ }
+ gd.disk->fops = &gdrom_bdops;
++ gd.disk->events = DISK_EVENT_MEDIA_CHANGE;
+ /* latch on to the interrupt */
+ err = gdrom_set_interrupt_handlers();
+ if (err)
diff --git a/patches.fixes/Revert-ide-unexport-DISK_EVENT_MEDIA_CHANGE-for-i.patch b/patches.fixes/Revert-ide-unexport-DISK_EVENT_MEDIA_CHANGE-for-i.patch
new file mode 100644
index 0000000000..645e6bd3c6
--- /dev/null
+++ b/patches.fixes/Revert-ide-unexport-DISK_EVENT_MEDIA_CHANGE-for-i.patch
@@ -0,0 +1,73 @@
+From 10fbb65794ebfdbae6c87d08a270503487866715 Mon Sep 17 00:00:00 2001
+From: Martin Wilck <mwilck@suse.com>
+Date: Thu, 17 Jan 2019 22:46:56 +0100
+Subject: [PATCH v2 2/4] Revert "ide: unexport DISK_EVENT_MEDIA_CHANGE for
+ ide-gd and ide-cd"
+Patch-mainline: v5.2-rc1
+Git-commit: 3c12c8e94ca04d668ad0cded7857fea2637834b3
+References: bsc#1110946, bsc#1119843
+
+This reverts commit 7eec77a1816a7042591a6cbdb4820e9e7ebffe0e.
+
+Instead of leaving disk->events completely empty, we now export the supported
+events again, and tell the block layer not to forward events to user space by
+not setting DISK_EVENT_FLAG_UEVENT. This allows the block layer to distinguish
+between devices that for which events should be handled in kernel only, and
+devices which don't support any meda change events at all.
+
+Changed wrt v1: fixed editing error made during revert.
+
+Cc: Borislav Petkov <bp@alien8.de>
+Signed-off-by: Martin Wilck <mwilck@suse.com>
+---
+ drivers/ide/ide-cd.c | 1 +
+ drivers/ide/ide-cd_ioctl.c | 5 +++--
+ drivers/ide/ide-gd.c | 6 ++++--
+ 3 files changed, 8 insertions(+), 4 deletions(-)
+
+--- a/drivers/ide/ide-cd.c
++++ b/drivers/ide/ide-cd.c
+@@ -1792,6 +1792,7 @@ static int ide_cd_probe(ide_drive_t *dri
+ ide_cd_read_toc(drive);
+ g->fops = &idecd_ops;
+ g->flags |= GENHD_FL_REMOVABLE | GENHD_FL_BLOCK_EVENTS_ON_EXCL_WRITE;
++ g->events = DISK_EVENT_MEDIA_CHANGE;
+ device_add_disk(&drive->gendev, g, NULL);
+ return 0;
+
+--- a/drivers/ide/ide-cd_ioctl.c
++++ b/drivers/ide/ide-cd_ioctl.c
+@@ -81,8 +81,9 @@ int ide_cdrom_drive_status(struct cdrom_
+
+ /*
+ * ide-cd always generates media changed event if media is missing, which
+- * makes it impossible to use for proper event reporting, so disk->events
+- * is cleared to 0 and the following function is used only to trigger
++ * makes it impossible to use for proper event reporting, so
++ * DISK_EVENT_FLAG_UEVENT is cleared in disk->events
++ * and the following function is used only to trigger
+ * revalidation and never propagated to userland.
+ */
+ unsigned int ide_cdrom_check_events_real(struct cdrom_device_info *cdi,
+--- a/drivers/ide/ide-gd.c
++++ b/drivers/ide/ide-gd.c
+@@ -299,8 +299,9 @@ static unsigned int ide_gd_check_events(
+ /*
+ * The following is used to force revalidation on the first open on
+ * removeable devices, and never gets reported to userland as
+- * genhd->events is 0. This is intended as removeable ide disk
+- * can't really detect MEDIA_CHANGE events.
++ * DISK_EVENT_FLAG_UEVENT isn't set in genhd->events.
++ * This is intended as removeable ide disk can't really detect
++ * MEDIA_CHANGE events.
+ */
+ ret = drive->dev_flags & IDE_DFLAG_MEDIA_CHANGED;
+ drive->dev_flags &= ~IDE_DFLAG_MEDIA_CHANGED;
+@@ -416,6 +417,7 @@ static int ide_gd_probe(ide_drive_t *dri
+ if (drive->dev_flags & IDE_DFLAG_REMOVABLE)
+ g->flags = GENHD_FL_REMOVABLE;
+ g->fops = &ide_gd_ops;
++ g->events = DISK_EVENT_MEDIA_CHANGE;
+ device_add_disk(&drive->gendev, g, NULL);
+ return 0;
+
diff --git a/patches.fixes/block-check_events-don-t-bother-with-events-if-un.patch b/patches.fixes/block-check_events-don-t-bother-with-events-if-un.patch
new file mode 100644
index 0000000000..890f35500d
--- /dev/null
+++ b/patches.fixes/block-check_events-don-t-bother-with-events-if-un.patch
@@ -0,0 +1,99 @@
+From e8bac0005b99f71190d276e06b30b6a4fae83532 Mon Sep 17 00:00:00 2001
+From: Martin Wilck <mwilck@suse.com>
+Date: Fri, 18 Jan 2019 00:00:07 +0100
+Subject: [PATCH v2 4/4] block: check_events: don't bother with events if
+ unsupported
+Patch-mainline: v5.2-rc1
+Git-commit: cdf3e3deb747d5e193dee617ed37c83060eb576f
+References: bsc#1110946, bsc#1119843
+
+Drivers now report to the block layer if they support media change
+events. If this is not the case, there's no need to allocate
+the event structure, and all event handling code can effectively
+be skipped. This simplifies code flow in particular for
+non-removable sd devices.
+
+This effectively reverts commit 75e3f3ee3c64 ("block: always allocate
+genhd->ev if check_events is implemented").
+
+The sysfs files for the events are kept in place even if no events
+are supported, as user space may rely on them being present. The only
+difference is that an error code is now returned if the user tries
+to set poll_msecs.
+
+Signed-off-by: Martin Wilck <mwilck@suse.com>
+---
+ block/genhd.c | 28 +++++++++++++++++-----------
+ 1 file changed, 17 insertions(+), 11 deletions(-)
+
+--- a/block/genhd.c
++++ b/block/genhd.c
+@@ -1923,6 +1923,9 @@ static ssize_t disk_events_poll_msecs_sh
+ {
+ struct gendisk *disk = dev_to_disk(dev);
+
++ if (!disk->ev)
++ return sprintf(buf, "-1\n");
++
+ return sprintf(buf, "%ld\n", disk->ev->poll_msecs);
+ }
+
+@@ -1939,6 +1942,9 @@ static ssize_t disk_events_poll_msecs_st
+ if (intv < 0 && intv != -1)
+ return -EINVAL;
+
++ if (!disk->ev)
++ return -ENODEV;
++
+ disk_block_events(disk);
+ disk->ev->poll_msecs = intv;
+ __disk_unblock_events(disk, true);
+@@ -2003,7 +2009,8 @@ static void disk_alloc_events(struct gen
+ {
+ struct disk_events *ev;
+
+- if (!disk->fops->check_events)
++ if (!disk->fops->check_events ||
++ !(disk->events & DISK_EVENT_TYPES_MASK))
+ return;
+
+ ev = kzalloc(sizeof(*ev), GFP_KERNEL);
+@@ -2025,14 +2032,14 @@ static void disk_alloc_events(struct gen
+
+ static void disk_add_events(struct gendisk *disk)
+ {
+- if (!disk->ev)
+- return;
+-
+ /* FIXME: error handling */
+ if (sysfs_create_files(&disk_to_dev(disk)->kobj, disk_events_attrs) < 0)
+ pr_warn("%s: failed to create sysfs files for events\n",
+ disk->disk_name);
+
++ if (!disk->ev)
++ return;
++
+ mutex_lock(&disk_events_mutex);
+ list_add_tail(&disk->ev->node, &disk_events);
+ mutex_unlock(&disk_events_mutex);
+@@ -2046,14 +2053,13 @@ static void disk_add_events(struct gendi
+
+ static void disk_del_events(struct gendisk *disk)
+ {
+- if (!disk->ev)
+- return;
+-
+- disk_block_events(disk);
++ if (disk->ev) {
++ disk_block_events(disk);
+
+- mutex_lock(&disk_events_mutex);
+- list_del_init(&disk->ev->node);
+- mutex_unlock(&disk_events_mutex);
++ mutex_lock(&disk_events_mutex);
++ list_del_init(&disk->ev->node);
++ mutex_unlock(&disk_events_mutex);
++ }
+
+ sysfs_remove_files(&disk_to_dev(disk)->kobj, disk_events_attrs);
+ }
diff --git a/patches.fixes/block-disk_events-introduce-event-flags.patch b/patches.fixes/block-disk_events-introduce-event-flags.patch
new file mode 100644
index 0000000000..c57a902f82
--- /dev/null
+++ b/patches.fixes/block-disk_events-introduce-event-flags.patch
@@ -0,0 +1,133 @@
+From 360a9cc1e5ae8d281c2dcf3cb41fb5e40999f01d Mon Sep 17 00:00:00 2001
+From: Martin Wilck <mwilck@suse.com>
+Date: Thu, 17 Jan 2019 22:30:48 +0100
+Subject: [PATCH v2 1/4] block: disk_events: introduce event flags
+Git-commit: c92e2f04b35938da23eb9a7f7101cbdd5ac7cdc4
+Patch-mainline: v5.2-rc1
+References: bsc#1110946, bsc#1119843
+
+Currently, an empty disk->events field tells the block layer not to forward
+media change events to user space. This was done in commit 7c88a168da80 ("block:
+don't propagate unlisted DISK_EVENTs to userland") in order to avoid events
+from "fringe" drivers to be forwarded to user space. By doing so, the block
+layer lost the information which events were supported by a particular
+block device, and most importantly, whether or not a given device supports
+media change events at all.
+
+Prepare for not interpreting the "events" field this way in the future any
+more. This is done by adding two flag bits that can be set to have the
+device treated like one that has the "events" field set to a non-zero value
+before. This applies only to the sd and sr drivers, which are changed to
+set the new flags.
+
+The new flags are DISK_EVENT_FLAG_POLL to enforce polling of the device for
+synchronous events, and DISK_EVENT_FLAG_UEVENT to tell the blocklayer to
+generate udev events from kernel events. They can easily be fit in the int
+reserved for event bits.
+
+This patch doesn't change behavior.
+
+Signed-off-by: Martin Wilck <mwilck@suse.com>
+---
+ block/genhd.c | 22 ++++++++++++++++------
+ drivers/scsi/sd.c | 3 ++-
+ drivers/scsi/sr.c | 3 ++-
+ include/linux/genhd.h | 7 +++++++
+ 4 files changed, 27 insertions(+), 8 deletions(-)
+
+--- a/block/genhd.c
++++ b/block/genhd.c
+@@ -1577,7 +1577,8 @@ static unsigned long disk_events_poll_ji
+ */
+ if (ev->poll_msecs >= 0)
+ intv_msecs = ev->poll_msecs;
+- else if (disk->events & ~disk->async_events)
++ else if (disk->events & DISK_EVENT_FLAG_POLL
++ && disk->events & ~disk->async_events)
+ intv_msecs = disk_events_dfl_poll_msecs;
+
+ return msecs_to_jiffies(intv_msecs);
+@@ -1787,11 +1788,13 @@ static void disk_check_events(struct dis
+
+ /*
+ * Tell userland about new events. Only the events listed in
+- * @disk->events are reported. Unlisted events are processed the
+- * same internally but never get reported to userland.
++ * @disk->events are reported, and only if DISK_EVENT_FLAG_UEVENT
++ * is set. Otherwise, events are processed internally but never
++ * get reported to userland.
+ */
+ for (i = 0; i < ARRAY_SIZE(disk_uevents); i++)
+- if (events & disk->events & (1 << i))
++ if (events & disk->events & (1 << i) &&
++ disk->events & DISK_EVENT_FLAG_UEVENT)
+ envp[nr_events++] = disk_uevents[i];
+
+ if (nr_events)
+@@ -1828,7 +1831,10 @@ static ssize_t disk_events_show(struct d
+ {
+ struct gendisk *disk = dev_to_disk(dev);
+
+- return __disk_events_show(disk->events, buf);
++ if (!(disk->events & DISK_EVENT_FLAG_UEVENT))
++ return 0;
++
++ return __disk_events_show(disk->events & DISK_EVENT_TYPES_MASK, buf);
+ }
+
+ static ssize_t disk_events_async_show(struct device *dev,
+@@ -1836,7 +1842,11 @@ static ssize_t disk_events_async_show(st
+ {
+ struct gendisk *disk = dev_to_disk(dev);
+
+- return __disk_events_show(disk->async_events, buf);
++ if (!(disk->events & DISK_EVENT_FLAG_UEVENT))
++ return 0;
++
++ return __disk_events_show(disk->async_events & DISK_EVENT_TYPES_MASK,
++ buf);
+ }
+
+ static ssize_t disk_events_poll_msecs_show(struct device *dev,
+--- a/drivers/scsi/sd.c
++++ b/drivers/scsi/sd.c
+@@ -3314,7 +3314,8 @@ static void sd_probe_async(void *data, a
+ gd->flags = GENHD_FL_EXT_DEVT;
+ if (sdp->removable) {
+ gd->flags |= GENHD_FL_REMOVABLE;
+- gd->events |= DISK_EVENT_MEDIA_CHANGE;
++ gd->events |= DISK_EVENT_MEDIA_CHANGE |
++ DISK_EVENT_FLAG_POLL | DISK_EVENT_FLAG_UEVENT;
+ }
+
+ blk_pm_runtime_init(sdp->request_queue, dev);
+--- a/drivers/scsi/sr.c
++++ b/drivers/scsi/sr.c
+@@ -712,7 +712,8 @@ static int sr_probe(struct device *dev)
+ sprintf(disk->disk_name, "sr%d", minor);
+ disk->fops = &sr_bdops;
+ disk->flags = GENHD_FL_CD | GENHD_FL_BLOCK_EVENTS_ON_EXCL_WRITE;
+- disk->events = DISK_EVENT_MEDIA_CHANGE | DISK_EVENT_EJECT_REQUEST;
++ disk->events = DISK_EVENT_MEDIA_CHANGE | DISK_EVENT_EJECT_REQUEST
++ | DISK_EVENT_FLAG_POLL | DISK_EVENT_FLAG_UEVENT;
+
+ blk_queue_rq_timeout(sdev->request_queue, SR_TIMEOUT);
+
+--- a/include/linux/genhd.h
++++ b/include/linux/genhd.h
+@@ -145,8 +145,15 @@ struct hd_struct {
+ enum {
+ DISK_EVENT_MEDIA_CHANGE = 1 << 0, /* media changed */
+ DISK_EVENT_EJECT_REQUEST = 1 << 1, /* eject requested */
++ /* Poll even if events_poll_msecs is unset */
++ DISK_EVENT_FLAG_POLL = 1 << 16,
++ /* Forward events to udev */
++ DISK_EVENT_FLAG_UEVENT = 1 << 17,
+ };
+
++#define DISK_EVENT_TYPES_MASK \
++ (DISK_EVENT_MEDIA_CHANGE | DISK_EVENT_EJECT_REQUEST)
++
+ struct disk_part_tbl {
+ struct rcu_head rcu_head;
+ int len;
diff --git a/series.conf b/series.conf
index fca720685e..a64ca9105e 100644
--- a/series.conf
+++ b/series.conf
@@ -45656,6 +45656,10 @@
patches.drivers/intel_th-msu-Fix-single-mode-with-IOMMU.patch
patches.drivers/ALSA-line6-Avoid-polluting-led_-namespace.patch
patches.drivers/leds-avoid-races-with-workqueue.patch
+ patches.fixes/block-disk_events-introduce-event-flags.patch
+ patches.fixes/Revert-ide-unexport-DISK_EVENT_MEDIA_CHANGE-for-i.patch
+ patches.fixes/Revert-block-unexport-DISK_EVENT_MEDIA_CHANGE-for.patch
+ patches.fixes/block-check_events-don-t-bother-with-events-if-un.patch
patches.fixes/audit-fix-a-memleak-caused-by-auditing-load-module.patch
patches.fixes/openvswitch-add-seqadj-extension-when-NAT-is-used.patch
patches.drivers/b43-shut-up-clang-Wuninitialized-variable-warning.patch