Update to 3.16.4

svn path=/dists/sid/linux/; revision=21932
This commit is contained in:
Ben Hutchings 2014-10-09 02:42:51 +00:00
parent 9a00ff7db5
commit 79be2bfa11
6 changed files with 195 additions and 289 deletions

198
debian/changelog vendored
View File

@ -1,4 +1,198 @@
linux (3.16.3-3) UNRELEASED; urgency=low
linux (3.16.4-1) UNRELEASED; urgency=low
* New upstream stable update:
https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.16.4
- module: Clean up ro/nx after early module load failures
(regression in 3.16)
- [armhf] cpufreq: OPP: Avoid sleeping while atomic
- [armhf] drm/tilcdc: Fix various bugs in removal path
- drm/ttm: Fix possible stack overflow by recursive shrinker calls.
- [x86] drm/i915: Fix crash when failing to parse MIPI VBT
(regression in 3.16)
- [x86] drm/i915: read HEAD register back in init_ring_common() to enforce
ordering (Closes: #763583)
- libata: widen Crucial M550 blacklist matching
- pata_scc: propagate return value of scc_wait_after_reset
- pwm: Fix period and polarity in pwm_get() for non-perfect matches
- aio: add missing smp_rmb() in read_events_ring
- [arm64] flush TLS registers during exec
- [arm64] use irq_set_affinity with force=false when migrating irqs
(regression in 3.15)
- [arm*] KVM: Nuke Hyp-mode tlbs before enabling MMU
- [x86] i2c: ismt: use correct length when copy buffer
- ftrace: Use current addr when converting to nop in
__ftrace_replace_code() (regression in 3.16)
- ALSA: core: fix buffer overflow in snd_info_get_line()
- ALSA: firewire-lib/dice: add arrangements of PCM pointer and interrupts
for Dice quirk (regression in 3.16)
- HID: picolcd: sanity check report size in raw_event() callback
(CVE-2014-3186)
- HID: magicmouse: sanity check report size in raw_event() callback
(CVE-2014-3181)
- HID: logitech-dj: prevent false errors to be shown (regression in 3.16.2)
- [x86] drm/i915: Skip load detect when intel_crtc->new_enable==true
(regression in 3.16)
- [x86] drm/i915: fix plane/cursor handling when runtime suspended
(regression in 3.14)
- [x86] drm/i915: Ignore VBT backlight presence check on Acer C720 (4005U)
(regression in 3.15)
- [x86] drm/i915: Wait for vblank before enabling the TV encoder
(regression in 3.16)
- [x86] drm/i915/hdmi: fix hdmi audio state readout (regression in 3.16)
- drm/radeon: Add ability to get and change dpm state when radeon PX card
is turned off (regression in 3.15)
- locks: pass correct "before" pointer to locks_unlink_lock in
generic_add_lease
- ufs: fix deadlocks introduced by sb mutex merge (regression in 3.16)
- USB: serial: fix potential stack buffer overflow
- USB: serial: fix potential heap buffer overflow
- USB: option: reduce interrupt-urb logging verbosity (regression in 3.16)
- [armhf] usb: phy: twl4030-usb: Fix lost interrupts after ID pin goes down
(regression in 3.13)
- [armhf] usb: phy: twl4030-usb: Fix regressions to runtime PM on omaps
(regressions in 3.14, 3.15)
- uwb: init beacon cache entry before registering uwb device
- usb: hub: take hub->hdev reference when processing from eventlist
- USB: EHCI: unlink QHs even after the controller has stopped
- Revert "ACPI / battery: fix wrong value of capacity_now reported when
fully charged" (regression in 3.16)
- [x86] iommu/vt-d: Check return value of acpi_bus_get_device()
(regression in 3.15)
- [armhf/armmp-lpae] iommu/arm-smmu: fix programming of SMMU_CBn_TCR for
stage 1
- cgroup: check cgroup liveliness before unbreaking kernfs
(regression in 3.15)
- NFSv4: Fix another bug in the close/open_downgrade code
(regression in 3.16.2)
- nfsd4: fix corruption of NFSv4 read data (regression in 3.16)
- nfs: check wait_on_bit_lock err in page_group_lock
- nfs: clear_request_commit while holding i_lock
- nfs: fix nonblocking calls to nfs_page_group_lock
- nfs: use blocking page_group_lock in add_request
- nfs: fix error handling in lock_and_join_requests
- nfs: don't sleep with inode lock in lock_and_join_requests
- nfs: disallow duplicate pages in pgio page vectors
- nfs: can_coalesce_requests must enforce contiguity
- [armhf] 8129/1: errata: work around Cortex-A15 erratum 830321 using dummy
strex
- [armhf] 8133/1: use irq_set_affinity with force=false when migrating irqs
(regression in 3.15)
- [armel,armhf] 8148/1: flush TLS and thumbee register state during exec
- [armel,armhf] 8149/1: perf: Don't sleep while atomic when enabling
per-cpu interrupts (regression in 3.15)
- [armhf] imx: fix .is_enabled() of shared gate clock (regression in 3.16)
- [armhf] 8165/1: alignment: don't break misaligned NEON load/store
- [mips*] Fix MFC1 & MFHC1 emulation for 64-bit MIPS systems
(regression in 3.15)
- ACPICA: Update to GPIO region handler interface.
- gpio / ACPI: Use pin index and bit length
- ACPI / platform / LPSS: disable async suspend/resume of LPSS devices
(regression in 3.16)
- ACPI / hotplug: Generate online uevents for ACPI containers
(regression in 3.14)
- ACPI / video: disable native backlight for ThinkPad X201s
(regression in 3.16)
- regmap: Fix regcache debugfs initialization (regression in 3.15)
- regmap: Fix handling of volatile registers for format_write() chips
- regmap: Don't attempt block writes when syncing cache on single_rw
devices
- cgroup: reject cgroup names with '\n'
- cgroup: delay the clearing of cgrp->kn->priv
- cgroup: fix unbalanced locking (regression in 3.14)
- [s390*] KVM: Fix user triggerable bug in dead code
- [s390*] KVM: mm: try a cow on read only pages for key ops
- [s390*] KVM: mm: Fix storage key corruption during swapping
- [s390*] KVM: mm: Fix guest storage key corruption in
ptep_set_access_flags
- [x86] xen: don't copy bogus duplicate entries into kernel page tables
- [x86] early_ioremap: Increase FIX_BTMAPS_SLOTS to 8 (regression in 3.16)
- shmem: fix nlink for rename overwrite directory
- SMB3: Fix oops when creating symlinks on smb3
- iio: Fix indio_dev->trig assignment in several drivers
- Target/iser: Don't put isert_conn inside disconnected handler
- target: Fix inverted logic in SE_DEV_ALUA_SUPPORT_STATE_STORE
(regression in 3.13)
- iscsi-target: Fix memory corruption in iscsit_logout_post_handler_diffcid
- SCSI: libiscsi: fix potential buffer overrun in __iscsi_conn_send_pdu
- Revert "iwlwifi: dvm: don't enable CTS to self" (regression in 3.16)
- iwlwifi: mvm: fix endianity issues with Smart Fifo commands
(regression in 3.14)
- iwlwifi: mvm: set MAC_FILTER_IN_BEACON correctly for STA/P2P client
(regression in 3.16)
- workqueue: apply __WQ_ORDERED to create_singlethread_workqueue()
(regression in 3.10)
- futex: Unlock hb->lock in futex_wait_requeue_pi() error path
- block: Fix dev_t minor allocation lifetime
- dm cache: fix race causing dirty blocks to be marked as clean
- percpu: fix pcpu_alloc_pages() failure path
- percpu: perform tlb flush after pcpu_map_pages() failure
- regulatory: add NUL to alpha2
- lockd: fix rpcbind crash on lockd startup failure (regression in 3.15)
- genhd: fix leftover might_sleep() in blk_free_devt()
- eventpoll: fix uninitialized variable in epoll_ctl
- kcmp: fix standard comparison bug
- fs/notify: don't show f_handle if exportfs_encode_inode_fh failed
- nilfs2: fix data loss with mmap()
- mm, slab: initialize object alignment on cache creation
- fs/cachefiles: add missing \n to kerror conversions (regression in 3.16)
- mm: softdirty: keep bit when zapping file pte
- sched: Fix unreleased llc_shared_mask bit during CPU hotplug
- brcmfmac: handle IF event for P2P_DEVICE interface (regression in 3.12)
- ath9k_htc: fix random decryption failure (regression in 3.15)
- [powerpc,ppc*] Add smp_mb() to arch_spin_is_locked()
- [powerpc,ppc*] Add smp_mb()s to arch_spin_unlock_wait()
- [hppa] Implement new LWS CAS supporting 64 bit operations.
- alarmtimer: Return relative times in timer_gettime
- alarmtimer: Do not signal SIGEV_NONE timers
- alarmtimer: Lock k_itimer during timer callback
- GFS2: fix d_splice_alias() misuses
- IB/qib: Correct reference counting in debugfs qp_stats
- IB/mlx4: Avoid null pointer dereference in mlx4_ib_scan_netdevs()
(regression in 3.14)
- IB/mlx4: Don't duplicate the default RoCE GID (regression in 3.14)
- IB/core: When marshaling uverbs path, clear unused fields
(regression in 3.14)
- mm: Fix unbalanced mutex in dma_pool_create(). (regression in 3.16)
- PCI: Add pci_ignore_hotplug() to ignore hotplug events for a device
(regression in 3.15)
- Revert "PCI: Don't scan random busses in pci_scan_bridge()"
(regression in 3.15)
- drm/nouveau/runpm: fix module unload
- drm/radeon/px: fix module unload
- fs: Fix nasty 32-bit overflow bug in buffer i/o code.
- blk-mq: Avoid race condition with uninitialized requests
- [x86] crypto: ccp - Check for CCP before registering crypto algs
- nl80211: clear skb cb before passing to netlink
- Revert "PCI: Make sure bus number resources stay within their parents
bounds" (regression in 3.15)
- cpufreq: release policy->rwsem on error (regression in 3.14)
- cpufreq: fix cpufreq suspend/resume for intel_pstate (regression in 3.15)
- media: it913x: init tuner on attach (regression in 3.15)
- media: videobuf2-dma-sg: fix for wrong GFP mask to
sg_alloc_table_from_pages (regression in 3.13)
- media: vb2: fix vb2 state check when start_streaming fails
(regression in 3.16.3)
- media: vb2: fix plane index sanity check in vb2_plane_cookie()
- md/raid1: clean up request counts properly in close_sync()
(regression in 3.13)
- md/raid1: be more cautious where we read-balance during resync.
(regression in 3.13)
- md/raid1: make sure resync waits for conflicting writes to complete.
(regression in 3.13)
- md/raid1: Don't use next_resync to determine how far resync has
progressed (regression in 3.13)
- md/raid1: update next_resync under resync_lock. (regression in 3.13)
- md/raid1: count resync requests in nr_pending. (regression in 3.13)
- md/raid1: fix_read_error should act on all non-faulty devices.
- md/raid1: intialise start_next_window for READ case to avoid hang
(regression in 3.13)
- netfilter: xt_hashlimit: perform garbage collection from process context
- mmc: mmci: Reverse IRQ handling for the arm_variant (regression in 3.15)
- partitions: aix.c: off by one bug (regression in 3.11)
- cpufreq: update 'cpufreq_suspended' after stopping governors
- aio: block exit_aio() until all context requests are completed
- ext4: propagate errors up to ext4_find_entry()'s callers
- ext4: avoid trying to kfree an ERR_PTR pointer
[ Ian Campbell ]
* [armhf] Add Exynos5 disk/usb/nic modules to udebs.
@ -11,8 +205,6 @@ linux (3.16.3-3) UNRELEASED; urgency=low
* [s390*] 3215: fix tty output containing tabs (Closes: #758264)
* radeon: Don't check for installed firmware if driver is built-in
(Closes: #763305)
* [x86] drm/i915: read HEAD register back in init_ring_common() to enforce
ordering (Closes: #763583)
[ Aurelien Jarno ]
* [arm64] Change RTC_DRV_PL031 and RTC_DRV_XGENE from modules to built-ins

View File

@ -1,161 +0,0 @@
From: Benjamin LaHaise <bcrl@kvack.org>
Date: Sun, 24 Aug 2014 13:14:05 -0400
Subject: aio: fix reqs_available handling
Origin: https://git.kernel.org/linus/d856f32a86b2b015ab180ab7a55e455ed8d3ccc5
As reported by Dan Aloni, commit f8567a3845ac ("aio: fix aio request
leak when events are reaped by userspace") introduces a regression when
user code attempts to perform io_submit() with more events than are
available in the ring buffer. Reverting that commit would reintroduce a
regression when user space event reaping is used.
Fixing this bug is a bit more involved than the previous attempts to fix
this regression. Since we do not have a single point at which we can
count events as being reaped by user space and io_getevents(), we have
to track event completion by looking at the number of events left in the
event ring. So long as there are as many events in the ring buffer as
there have been completion events generate, we cannot call
put_reqs_available(). The code to check for this is now placed in
refill_reqs_available().
A test program from Dan and modified by me for verifying this bug is available
at http://www.kvack.org/~bcrl/20140824-aio_bug.c .
Reported-by: Dan Aloni <dan@kernelim.com>
Signed-off-by: Benjamin LaHaise <bcrl@kvack.org>
Acked-by: Dan Aloni <dan@kernelim.com>
Cc: Kent Overstreet <kmo@daterainc.com>
Cc: Mateusz Guzik <mguzik@redhat.com>
Cc: Petr Matousek <pmatouse@redhat.com>
Cc: stable@vger.kernel.org # v3.16 and anything that f8567a3845ac was backported to
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
---
fs/aio.c | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----
1 file changed, 73 insertions(+), 4 deletions(-)
--- a/fs/aio.c
+++ b/fs/aio.c
@@ -141,6 +141,7 @@ struct kioctx {
struct {
unsigned tail;
+ unsigned completed_events;
spinlock_t completion_lock;
} ____cacheline_aligned_in_smp;
@@ -880,6 +881,68 @@ out:
return ret;
}
+/* refill_reqs_available
+ * Updates the reqs_available reference counts used for tracking the
+ * number of free slots in the completion ring. This can be called
+ * from aio_complete() (to optimistically update reqs_available) or
+ * from aio_get_req() (the we're out of events case). It must be
+ * called holding ctx->completion_lock.
+ */
+static void refill_reqs_available(struct kioctx *ctx, unsigned head,
+ unsigned tail)
+{
+ unsigned events_in_ring, completed;
+
+ /* Clamp head since userland can write to it. */
+ head %= ctx->nr_events;
+ if (head <= tail)
+ events_in_ring = tail - head;
+ else
+ events_in_ring = ctx->nr_events - (head - tail);
+
+ completed = ctx->completed_events;
+ if (events_in_ring < completed)
+ completed -= events_in_ring;
+ else
+ completed = 0;
+
+ if (!completed)
+ return;
+
+ ctx->completed_events -= completed;
+ put_reqs_available(ctx, completed);
+}
+
+/* user_refill_reqs_available
+ * Called to refill reqs_available when aio_get_req() encounters an
+ * out of space in the completion ring.
+ */
+static void user_refill_reqs_available(struct kioctx *ctx)
+{
+ spin_lock_irq(&ctx->completion_lock);
+ if (ctx->completed_events) {
+ struct aio_ring *ring;
+ unsigned head;
+
+ /* Access of ring->head may race with aio_read_events_ring()
+ * here, but that's okay since whether we read the old version
+ * or the new version, and either will be valid. The important
+ * part is that head cannot pass tail since we prevent
+ * aio_complete() from updating tail by holding
+ * ctx->completion_lock. Even if head is invalid, the check
+ * against ctx->completed_events below will make sure we do the
+ * safe/right thing.
+ */
+ ring = kmap_atomic(ctx->ring_pages[0]);
+ head = ring->head;
+ kunmap_atomic(ring);
+
+ refill_reqs_available(ctx, head, ctx->tail);
+ }
+
+ spin_unlock_irq(&ctx->completion_lock);
+}
+
/* aio_get_req
* Allocate a slot for an aio request.
* Returns NULL if no requests are free.
@@ -888,8 +951,11 @@ static inline struct kiocb *aio_get_req(
{
struct kiocb *req;
- if (!get_reqs_available(ctx))
- return NULL;
+ if (!get_reqs_available(ctx)) {
+ user_refill_reqs_available(ctx);
+ if (!get_reqs_available(ctx))
+ return NULL;
+ }
req = kmem_cache_alloc(kiocb_cachep, GFP_KERNEL|__GFP_ZERO);
if (unlikely(!req))
@@ -948,8 +1014,8 @@ void aio_complete(struct kiocb *iocb, lo
struct kioctx *ctx = iocb->ki_ctx;
struct aio_ring *ring;
struct io_event *ev_page, *event;
+ unsigned tail, pos, head;
unsigned long flags;
- unsigned tail, pos;
/*
* Special case handling for sync iocbs:
@@ -1010,10 +1076,14 @@ void aio_complete(struct kiocb *iocb, lo
ctx->tail = tail;
ring = kmap_atomic(ctx->ring_pages[0]);
+ head = ring->head;
ring->tail = tail;
kunmap_atomic(ring);
flush_dcache_page(ctx->ring_pages[0]);
+ ctx->completed_events++;
+ if (ctx->completed_events > 1)
+ refill_reqs_available(ctx, head, tail);
spin_unlock_irqrestore(&ctx->completion_lock, flags);
pr_debug("added to ring %p at [%u]\n", iocb, tail);
@@ -1028,7 +1098,6 @@ void aio_complete(struct kiocb *iocb, lo
/* everything turned out well, dispose of the aiocb. */
kiocb_free(iocb);
- put_reqs_available(ctx, 1);
/*
* We have to order our ring_info tail store above and test

View File

@ -1,49 +0,0 @@
From: Aurelien Jarno <aurelien@aurel32.net>
Date: Sun, 20 Jul 2014 19:25:33 +0200
Subject: MIPS: ZBOOT: add missing <linux/string.h> include
Forwarded: http://www.linux-mips.org/archives/linux-mips/2014-07/msg00377.html
Commit dc4d7b37 (MIPS: ZBOOT: gather string functions into string.c)
moved the string related functions into a separate file, which might
cause the following build error, depending on the configuration:
| CC arch/mips/boot/compressed/decompress.o
| In file included from linux/arch/mips/boot/compressed/../../../../lib/decompress_unxz.c:234:0,
| from linux/arch/mips/boot/compressed/decompress.c:67:
| linux/arch/mips/boot/compressed/../../../../lib/xz/xz_dec_stream.c: In function 'fill_temp':
| linux/arch/mips/boot/compressed/../../../../lib/xz/xz_dec_stream.c:162:2: error: implicit declaration of function 'memcpy' [-Werror=implicit-function-declaration]
| cc1: some warnings being treated as errors
| linux/scripts/Makefile.build:308: recipe for target 'arch/mips/boot/compressed/decompress.o' failed
| make[6]: *** [arch/mips/boot/compressed/decompress.o] Error 1
| linux/arch/mips/Makefile:308: recipe for target 'vmlinuz' failed
It does not fail with the standard configuration, as when
CONFIG_DYNAMIC_DEBUG is not enabled <linux/string.h> gets included in
include/linux/dynamic_debug.h. There might be other ways for it to
get indirectly included.
We can't add the include directly in xz_dec_stream.c as some
architectures might want to use a different version for the boot/
directory (see for example arch/x86/boot/string.h).
Cc: stable@vger.kernel.org
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
---
arch/mips/boot/compressed/decompress.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/mips/boot/compressed/decompress.c b/arch/mips/boot/compressed/decompress.c
index c00c4dd..5244cec 100644
--- a/arch/mips/boot/compressed/decompress.c
+++ b/arch/mips/boot/compressed/decompress.c
@@ -13,6 +13,7 @@
#include <linux/types.h>
#include <linux/kernel.h>
+#include <linux/string.h>
#include <asm/addrspace.h>
--
2.0.0

View File

@ -1,31 +0,0 @@
From: Helge Deller <deller@gmx.de>
Date: Sun, 21 Sep 2014 20:53:39 +0200
Subject: hppa-arch-fast-indirect.patch
Bug-Debian: https://bugs.debian.org/762390
Currently the 64bit hppa kernel gets miscompiled by gcc-4.8 and as such
it will not boot.
The attached patch fixes one of the problems. Latest changes in gcc-4.8
made changes to the -mfast-indirect-calls option which now produces wrong code
when compiling for 64bit. The problem is being worked on in upstream gcc-4.8,
and we don't know yet if we will implement -mfast-indirect-calls for 64bit
(which might introduce side-effects) or not. That's the reason why I don't want
to push attached patch upstream yet.
--- a/arch/parisc/Makefile
+++ b/arch/parisc/Makefile
@@ -48,7 +48,12 @@ cflags-y := -pipe
# These flags should be implied by an hppa-linux configuration, but they
# are not in gcc 3.2.
-cflags-y += -mno-space-regs -mfast-indirect-calls
+cflags-y += -mno-space-regs
+
+# -mfast-indirect-calls is only relevant for 32-bit kernels.
+ifndef CONFIG_64BIT
+cflags-y += -mfast-indirect-calls
+endif
# Currently we save and restore fpregs on all kernel entry/interruption paths.
# If that gets optimized, we might need to disable the use of fpregs in the

View File

@ -1,41 +0,0 @@
From: Jiri Kosina <jkosina@suse.cz>
Date: Thu, 7 Aug 2014 16:29:53 +0200
Subject: drm/i915: read HEAD register back in init_ring_common() to enforce
ordering
Origin: https://git.kernel.org/linus/ece4a17d237a79f63fbfaf3f724a12b6d500555c
Withtout this, ring initialization fails reliabily during resume with
[drm:init_ring_common] *ERROR* render ring initialization failed ctl 0001f001 head ffffff8804 tail 00000000 start 000e4000
This is not a complete fix, but it is verified to make the ring
initialization failures during resume much less likely.
We were not able to root-cause this bug (likely HW-specific to Gen4 chips)
yet. This is therefore used as a ducttape before problem is fully
understood and proper fix created, so that people don't suffer from
completely unusable systems in the meantime.
The discussion and debugging is happening at
https://bugs.freedesktop.org/show_bug.cgi?id=76554
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Cc: stable@vger.kernel.org
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
drivers/gpu/drm/i915/intel_ringbuffer.c | 3 +++
1 file changed, 3 insertions(+)
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -517,6 +517,9 @@ static int init_ring_common(struct intel
else
ring_setup_phys_status_page(ring);
+ /* Enforce ordering by reading HEAD register back */
+ I915_READ_HEAD(ring);
+
/* Initialize the ring. This must happen _after_ we've cleared the ring
* registers with the above sequence (the readback of the HEAD registers
* also enforces ordering), otherwise the hw might lose the new ring

View File

@ -51,12 +51,9 @@ bugfix/arm/omap-musb-choice.patch
bugfix/mips/disable-advansys.patch
bugfix/arm/ixp4xx_iobe.patch
bugfix/m68k/ethernat-kconfig.patch
bugfix/mips/MIPS-ZBOOT-add-missing-linux-string.h-include.patch
bugfix/x86/x86-reject-x32-executables-if-x32-abi-not-supported.patch
bugfix/s390/s390-3215-fix-hanging-console-issue.patch
bugfix/arm64/arm64-crypto-fix-makefile-rule-for-aes-glue-.o.patch
bugfix/parisc/hppa-arch-fast-indirect.patch
bugfix/x86/drm-i915-read-HEAD-register-back-in-init_ring_common.patch
# Arch features
features/mips/MIPS-Support-hard-limit-of-cpu-count-nr_cpu_ids.patch
@ -110,7 +107,6 @@ features/arm64/dts-Add-bindings-for-APM-X-Gene-SoC-ethernet-driver.patch
bugfix/all/misc-bmp085-Enable-building-as-a-module.patch
bugfix/all/kbuild-use-nostdinc-in-compile-tests.patch
bugfix/all/disable-some-marvell-phys.patch
bugfix/all/aio-fix-reqs_available-handling.patch
debian/i2o-disable-i2o_ext_adaptec-on-64bit.patch
bugfix/all/aic94xx-remove-broken-fallback-for-missing-ctrl-a.patch
bugfix/all/builddeb-put-the-dbg-files-into-the-correct-director.patch