Merge changes from sid up to 3.12.8-1

svn path=/dists/trunk/linux/; revision=20985
This commit is contained in:
Ben Hutchings 2014-01-20 03:07:26 +00:00
commit 04aa0d4809
19 changed files with 342 additions and 22 deletions

149
debian/changelog vendored
View File

@ -53,6 +53,155 @@ linux (3.13~rc6-1~exp1) experimental; urgency=low
-- Ben Hutchings <ben@decadent.org.uk> Mon, 30 Dec 2013 02:36:11 +0100
linux (3.12.8-1) unstable; urgency=medium
* New upstream stable update:
http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.12.7
- [powerpc] kvm: fix rare but potential deadlock scene
- [m68k] TTY: pmac_zilog, check existence of ports in pmz_console_init()
- xhci: Limit the spurious wakeup fix only to HP machines (fixes
regression in 3.12)
- usb: chipidea: host: Only disable the vbus regulator if it is not NULL
(fixes regression in 3.12)
- aio: fix kioctx leak introduced by "aio: Fix a trinity splat"
- iser-target: Move INIT_WORK setup into isert_create_device_ib_res
- [x86] idle: Repair large-server 50-watt idle-power regression
(fixes regression in 3.10)
- ext4: call ext4_error_inode() if jbd2_journal_dirty_metadata() fails
- ext4: fix use-after-free in ext4_mb_new_blocks
- ext4: fix del_timer() misuse for ->s_err_report
- ext4: add explicit casts when masking cluster sizes
- ext4: fix bigalloc regression
- sched/rt: Fix rq's cpupri leak while enqueue/dequeue child RT entities
- net_dma: mark broken (fixes potential data loss)
- drm/i915: Take modeset locks around intel_modeset_setup_hw_state()
- drm/i915: Hold mutex across i915_gem_release
- drm/i915: Fix use-after-free in do_switch
- drm/i915: don't update the dri1 breadcrumb with modesetting
- drm/i915: Fix erroneous dereference of batch_obj inside reset_status
- ceph: Avoid data inconsistency due to d-cache aliasing in readpage()
- tg3: Expand 4g_overflow_test workaround to skb fragments of any size.
- cgroup: fix cgroup_create() error handling path
- [powerpc] auxvec.h: account for AT_HWCAP2 in AT_VECTOR_SIZE_BASE
- ath9k_htc: properly set MAC address and BSSID mask (CVE-2013-4579)
(Closes: #729573)
- KVM: nVMX: Unconditionally uninit the MMU on nested vmexit
- [x86] KVM: Fix APIC map calculation after re-enabling
- [powerpc] Fix bad stack check in exception entry
- libata: implement ATA_HORKAGE_NO_NCQ_TRIM and apply it to Micro M500 SSDs
(fixes potential data loss)
- radiotap: fix bitmap-end-finding buffer overrun
- mm: numa: serialise parallel get_user_page against THP migration
- mm: numa: call MMU notifiers on THP migration
- mm: clear pmd_numa before invalidating
- mm: numa: do not clear PTE for pte_numa update
- mm: numa: ensure anon_vma is locked to prevent parallel THP splits
- sched: numa: skip inaccessible VMAs
- mm: numa: clear numa hinting information on mprotect
- mm: fix TLB flush race between migration, and change_protection_range
- mm: numa: guarantee that tlb_flush_pending updates are visible before
page table updates
- mm/mempolicy: correct putback method for isolate pages if failed
- mm/compaction: respect ignore_skip_hint in update_pageblock_skip
- mm/hugetlb: check for pte NULL pointer in __page_check_address()
- mm: munlock: fix a bug where THP tail page is encountered
- mm: munlock: fix deadlock in __munlock_pagevec()
- mm: fix use-after-free in sys_remap_file_pages
- Input: allocate absinfo data when setting ABS capability
- GFS2: Fix use-after-free race when calling gfs2_remove_from_ail
- GFS2: Fix slab memory leak in gfs2_bufdata
- GFS2: Fix incorrect invalidation for DIO/buffered I/O
- [s390] 3270: fix allocation of tty3270_screen structure
- [sh] always link in helper functions extracted from libgcc
- selinux: look for IPsec labels on both inbound and outbound packets
- selinux: process labeled IPsec TCP SYN-ACK packets properly in
selinux_ip_postroute()
- aio: clean up and fix aio_setup_ring page mapping
- aio/migratepages: make aio migrate pages sane
- ACPIPHP / radeon / nouveau: Fix VGA switcheroo problem related to hotplug
(regression in 3.12)
http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.12.8
- IPv6: Fixed support for blackhole and prohibit routes
- net: do not pretend FRAGLIST support
- tun: unbreak truncated packet signalling
- macvtap: signal truncated packets
- br: fix use of ->rx_handler_data in code executed on non-rx_handler path
- inet: fix NULL pointer Oops in fib(6)_rule_suppress
- vxlan: release rt when found circular route
- ipv6: fix illegal mac_header comparison on 32bit
- ip_gre: fix msg_name parsing for recvfrom/recvmsg
- net: inet_diag: zero out uninitialized idiag_{src,dst} fields
- drivers/net/hamradio: Integer overflow in hdlcdrv_ioctl()
- hamradio/yam: fix info leak in ioctl
- net: fec: fix potential use after free
- rds: prevent dereference of a NULL device
- arc_emac: fix potential use after free
- net: rose: restore old recvmsg behavior (regression in 3.12.4)
- vlan: Fix header ops passthru when doing TX VLAN offload.
- virtio-net: fix refill races during restore
- net: llc: fix use after free in llc_ui_recvmsg
- netpoll: Fix missing TXQ unlock and and OOPS.
- bridge: use spin_lock_bh() in br_multicast_set_hash_max
- sfc: Add length checks to efx_xmit_with_hwtstamp() and
efx_ptp_is_ptp_tx()
- sfc: PTP: Moderate log message on event queue overflow
- sfc: Rate-limit log message for PTP packets without a matching timestamp
event
- [arm] fix "bad mode in ... handler" message for undefined instructions
- [arm] 7923/1: mm: fix dcache flush logic for compound high pages
- [hppa] Ensure full cache coherency for kmap/kunmap
- clk: clk-divider: fix divisor > 255 bug
- mfd: rtsx_pcr: Disable interrupts before cancelling delayed works
- netfilter: fix wrong byte order in nf_ct_seqadj_set internal information
(regression in 3.12)
- netfilter: nf_nat: fix access to uninitialized buffer in IRC NAT helper
- x86, fpu, amd: Clear exceptions in AMD FXSAVE workaround
(CVE-2014-1438) (Closes: #733551)
- sched: Fix race on toggling cfs_bandwidth_used
- sched: Fix cfs_bandwidth misuse of hrtimer_expires_remaining
- sched: Fix hrtimer_cancel()/rq->lock deadlock
[ Ben Hutchings ]
* [hppa] Update configuration, thanks to Helge Deller (Closes: #733895)
- Change AGP, AGP_PARISC from modules to built-in, to work around
race condition between DRM and AGP
- Enable DEBUG_STACKOVERFLOW
- udeb: Build packages for the parisc64-smp flavour instead of the
removed parisc flavour (fixes FTBFS)
* linux-image: Make maintainer scripts less verbose (Closes: #734266)
* [m68k] Enable EARLY_PRINTK (Closes: #734289)
* crypto: Enable more processor-specific algorithms and drivers:
- [amd64] Enable CRYPTO_CRCT10DIF_PCLMUL, CRYPTO_SHA256_SSSE3,
CRYPTO_SHA512_SSSE3, CRYPTO_GHASH_CLMUL_NI_INTEL,
CRYPTO_CAMELLIA_AESNI_AVX_X86_64, CRYPTO_CAMELLIA_AESNI_AVX2_X86_64,
CRYPTO_CAST5_AVX_X86_64, CRYPTO_CAST6_AVX_X86_64,
CRYPTO_SERPENT_AVX2_X86_64 as modules (Closes: #734376)
- [arm] Enable CRYPTO_SHA1_ARM, CRYPTO_AES_ARM as modules
- [powerpc] Enable CRYPTO_SHA1_PPC as module
- [sparc] Enable CRYPTO_CRC32C_SPARC64, CRYPTO_MD5_SPARC64,
CRYPTO_SHA1_SPARC64, CRYPTO_SHA256_SPARC64, CRYPTO_SHA512_SPARC64,
CRYPTO_AES_SPARC64, CRYPTO_CAMELLIA_SPARC64, CRYPTO_DES_SPARC64,
CRYPTO_DEV_NIAGARA2 as modules
- [x86] Enable CRYPTO_CRC32_PCLMUL as module
* [powerpc] Remove AT_HWCAP2 from auxv to avoid module ABI change
* [rt] Update to 3.12.6-rt9:
- rcu: Don't activate RCU core on NO_HZ_FULL CPUs
- timers: do not raise softirq unconditionally
- rcutree/rcu_bh_qs: disable irq while calling rcu_preempt_qs()
* Revert "net: unix: allow set_peek_off to fail", included in 3.12.8,
as it would cause an ABI change
* media: Enable VIDEO_STK1160_COMMON (new dependency of VIDEO_STK1160)
as module (Closes: #735870)
* [x86] brcm80211: Enable BRCMFMAC as module, and BRCMFMAC_SDIO
(Closes: #735245)
* [x86] staging: lustre: Make LUSTRE_LLITE_LLOOP tristate
[ Ian Campbell ]
* [armel/kirkwood] Fix interrupt handling on non-DT platforms (Closes: #735172)
* [armhf/armmp] Add mmci driver to mmc-module udeb.
-- Ben Hutchings <ben@decadent.org.uk> Sun, 19 Jan 2014 19:22:22 +0000
linux (3.12.6-2) unstable; urgency=medium
[ Bastian Blank ]

View File

@ -17,6 +17,12 @@ CONFIG_EARLY_PRINTK=y
#. Support Thumb user binaries
CONFIG_ARM_THUMB=y
##
## file: crypto/Kconfig
##
CONFIG_CRYPTO_SHA1_ARM=m
CONFIG_CRYPTO_AES_ARM=m
##
## file: drivers/input/misc/Kconfig
##

View File

@ -6,6 +6,12 @@ CONFIG_ATAGS_PROC=y
#. Enable floating point unit
CONFIG_VFP=y
##
## file: crypto/Kconfig
##
CONFIG_CRYPTO_SHA1_ARM=m
CONFIG_CRYPTO_AES_ARM=m
##
## file: drivers/input/mouse/Kconfig
##

View File

@ -1762,6 +1762,7 @@ CONFIG_USB_SN9C102=m
##
## file: drivers/media/usb/stk1160/Kconfig
##
CONFIG_VIDEO_STK1160_COMMON=m
CONFIG_VIDEO_STK1160=m
CONFIG_VIDEO_STK1160_AC97=y

View File

@ -21,6 +21,7 @@ CONFIG_PARISC_PAGE_SIZE_4KB=y
## file: arch/parisc/Kconfig.debug
##
# CONFIG_DEBUG_RODATA is not set
CONFIG_DEBUG_STACKOVERFLOW=y
##
## file: block/partitions/Kconfig

View File

@ -18,8 +18,8 @@ CONFIG_PATA_SIL680=m
## file: drivers/char/agp/Kconfig
##
#. for ATI FireGL DRM in C8000 workstation
CONFIG_AGP=m
CONFIG_AGP_PARISC=m
CONFIG_AGP=y
CONFIG_AGP_PARISC=y
##
## file: drivers/gpu/drm/Kconfig

View File

@ -147,6 +147,7 @@ CONFIG_SUN_PARTITION=y
## file: crypto/Kconfig
##
CONFIG_CRYPTO_CRC32C_INTEL=m
CONFIG_CRYPTO_CRC32_PCLMUL=m
CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=m
CONFIG_CRYPTO_AES_NI_INTEL=m
@ -1091,6 +1092,14 @@ CONFIG_AIRO_CS=m
CONFIG_PCMCIA_WL3501=m
CONFIG_USB_ZD1201=m
##
## file: drivers/net/wireless/brcm80211/Kconfig
##
CONFIG_BRCMFMAC=m
#. Sony Vaio laptops
CONFIG_BRCMFMAC_SDIO=y
# CONFIG_BRCMFMAC_USB is not set
##
## file: drivers/net/wireless/mwifiex/Kconfig
##

View File

@ -30,13 +30,22 @@ CONFIG_GENERIC_CPU=y
##
## file: crypto/Kconfig
##
CONFIG_CRYPTO_CRCT10DIF_PCLMUL=m
CONFIG_CRYPTO_SHA1_SSSE3=m
CONFIG_CRYPTO_SHA256_SSSE3=m
CONFIG_CRYPTO_SHA512_SSSE3=m
CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=m
CONFIG_CRYPTO_AES_X86_64=m
CONFIG_CRYPTO_BLOWFISH_X86_64=m
CONFIG_CRYPTO_CAMELLIA_X86_64=m
CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64=m
CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64=m
CONFIG_CRYPTO_CAST5_AVX_X86_64=m
CONFIG_CRYPTO_CAST6_AVX_X86_64=m
CONFIG_CRYPTO_SALSA20_X86_64=m
CONFIG_CRYPTO_SERPENT_SSE2_X86_64=m
CONFIG_CRYPTO_SERPENT_AVX_X86_64=m
CONFIG_CRYPTO_SERPENT_AVX2_X86_64=m
CONFIG_CRYPTO_TWOFISH_X86_64=m
CONFIG_CRYPTO_TWOFISH_X86_64_3WAY=m
CONFIG_CRYPTO_TWOFISH_AVX_X86_64=m

View File

@ -20,6 +20,11 @@ CONFIG_M68060=y
CONFIG_M68KFPU_EMU=y
# CONFIG_ADVANCED is not set
##
## file: arch/m68k/Kconfig.debug
##
CONFIG_EARLY_PRINTK=y
##
## file: arch/m68k/Kconfig.devices
##

View File

@ -74,6 +74,11 @@ CONFIG_PPC_PMAC=y
CONFIG_AMIGA_PARTITION=y
CONFIG_MAC_PARTITION=y
##
## file: crypto/Kconfig
##
CONFIG_CRYPTO_SHA1_PPC=m
##
## file: drivers/ata/Kconfig
##

View File

@ -13,6 +13,18 @@ CONFIG_SUN_OPENPROMFS=m
##
CONFIG_SUN_PARTITION=y
##
## file: crypto/Kconfig
##
CONFIG_CRYPTO_CRC32C_SPARC64=m
CONFIG_CRYPTO_MD5_SPARC64=m
CONFIG_CRYPTO_SHA1_SPARC64=m
CONFIG_CRYPTO_SHA256_SPARC64=m
CONFIG_CRYPTO_SHA512_SPARC64=m
CONFIG_CRYPTO_AES_SPARC64=m
CONFIG_CRYPTO_CAMELLIA_SPARC64=m
CONFIG_CRYPTO_DES_SPARC64=m
##
## file: drivers/ata/Kconfig
##
@ -58,6 +70,11 @@ CONFIG_PRINTER=m
##
# CONFIG_IPMI_HANDLER is not set
##
## file: drivers/crypto/Kconfig
##
CONFIG_CRYPTO_DEV_NIAGARA2=m
##
## file: drivers/gpu/drm/Kconfig
##

View File

@ -1,2 +1,3 @@
#include <mmc-modules>
sdhci-esdhc-imx
mmci

View File

@ -1,3 +1,3 @@
# arch version flavour installedname suffix build-depends
hppa - parisc - y -
hppa - parisc64 - y -
# arch version flavour installedname suffix build-depends
hppa - parisc - y -
hppa - parisc64-smp - y -

View File

@ -0,0 +1,119 @@
From: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
Subject: [PATCH] ARM: orion: provide C-style interrupt handler for
MULTI_IRQ_HANDLER
Date: Thu, 16 Jan 2014 09:10:31 +0100
Message-Id: <1389859831-9883-1-git-send-email-sebastian.hesselbarth@gmail.com>
DT-enabled Marvell Kirkwood and Dove SoCs make use of an irqchip
driver. As expected for irqchip drivers, it uses a C-style
interrupt handler and therefore selects MULTI_IRQ_HANDLER.
Now, compiling a kernel with both non-DT and DT support enabled,
selecting MULTI_IRQ_HANDLER will break ASM irq handler used by
non-DT boards.
Therefore, we provide a C-style irq handler even for non-DT boards,
if MULTI_IRQ_HANDLER is set. By installing the C-style irq handler
in orion_irq_init this is transparent to all non-DT board files.
While the regression report was filed on Marvell Kirkwood, also
Marvell Dove non-DT boards are affected and fixed by this patch.
Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
Tested-by: Ian Campbell <ijc@hellion.org.uk>
Reported-by: Ian Campbell <ijc@hellion.org.uk>
Fixes: 2326f04321a9 ("ARM: kirkwood: convert to DT irqchip and clocksource")
Fixes: f07d73e33d0e ("ARM: dove: convert to DT irqchip and clocksource")
---
Compared to the two patch version sent on Ian's regression report,
I cooked this down to a single patch only touching plat-orion/irq.c.
I also dropped Orion5x and MV78x00, as they not yet select MULTI_IRQ_HANDLER
at all. Instead I added a comment about taking care of them, as soon as
they move over to an irqchip driver themselves.
I have not yet Cc'ed this patch to -stable to get some discussion and
an Acked-by from Jason or Andrew, too.
Cc: Jason Cooper <jason@lakedaemon.net>
Cc: Andrew Lunn <andrew@lunn.ch>
Cc: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Ian Campbell <ijc@hellion.org.uk>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
---
arch/arm/plat-orion/irq.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 47 insertions(+)
diff --git a/arch/arm/plat-orion/irq.c b/arch/arm/plat-orion/irq.c
index c492e1b3dfdb..807df142444b 100644
--- a/arch/arm/plat-orion/irq.c
+++ b/arch/arm/plat-orion/irq.c
@@ -15,8 +15,51 @@
#include <linux/io.h>
#include <linux/of_address.h>
#include <linux/of_irq.h>
+#include <asm/exception.h>
#include <plat/irq.h>
#include <plat/orion-gpio.h>
+#include <mach/bridge-regs.h>
+
+#ifdef CONFIG_MULTI_IRQ_HANDLER
+/*
+ * Compiling with both non-DT and DT support enabled, will
+ * break asm irq handler used by non-DT boards. Therefore,
+ * we provide a C-style irq handler even for non-DT boards,
+ * if MULTI_IRQ_HANDLER is set.
+ *
+ * Notes:
+ * - this is prepared for Kirkwood and Dove only, update
+ * accordingly if you add Orion5x or MV78x00.
+ * - Orion5x uses different macro names and has only one
+ * set of CAUSE/MASK registers.
+ * - MV78x00 uses the same macro names but has a third
+ * set of CAUSE/MASK registers.
+ *
+ */
+
+static void __iomem *orion_irq_base = IRQ_VIRT_BASE;
+
+asmlinkage void
+__exception_irq_entry orion_legacy_handle_irq(struct pt_regs *regs)
+{
+ u32 stat;
+
+ stat = readl_relaxed(orion_irq_base + IRQ_CAUSE_LOW_OFF);
+ stat &= readl_relaxed(orion_irq_base + IRQ_MASK_LOW_OFF);
+ if (stat) {
+ unsigned int hwirq = __fls(stat);
+ handle_IRQ(hwirq, regs);
+ return;
+ }
+ stat = readl_relaxed(orion_irq_base + IRQ_CAUSE_HIGH_OFF);
+ stat &= readl_relaxed(orion_irq_base + IRQ_MASK_HIGH_OFF);
+ if (stat) {
+ unsigned int hwirq = 32 + __fls(stat);
+ handle_IRQ(hwirq, regs);
+ return;
+ }
+}
+#endif
void __init orion_irq_init(unsigned int irq_start, void __iomem *maskaddr)
{
@@ -35,6 +78,10 @@ void __init orion_irq_init(unsigned int irq_start, void __iomem *maskaddr)
ct->chip.irq_unmask = irq_gc_mask_set_bit;
irq_setup_generic_chip(gc, IRQ_MSK(32), IRQ_GC_INIT_MASK_CACHE,
IRQ_NOREQUEST, IRQ_LEVEL | IRQ_NOPROBE);
+
+#ifdef CONFIG_MULTI_IRQ_HANDLER
+ set_handle_irq(orion_legacy_handle_irq);
+#endif
}
#ifdef CONFIG_OF
--
1.8.5.2

View File

@ -77,3 +77,4 @@ bugfix/all/disable-some-marvell-phys.patch
features/all/media-az6007-support-Technisat-Cablestar-Combo-HDCI-.patch
bugfix/all/staging-lustre-Make-LUSTRE_LLITE_LLOOP-tristate.patch
bugfix/arm/xen-pci-fix-build-on-non-x86.patch
bugfix/arm/ARM-orion-provide-C-style-interrupt-handler-for-MULTI_IRQ_HANDLER.patch

View File

@ -471,7 +471,6 @@ sub image_magic {
######################################################################
sub do_modules {
print STDERR "Running depmod.\n";
my $ret = system("depmod -a -F $realimageloc/System.map-$version $version");
my $exit_value = $? >> 8;
my $signal_num = $? & 127;
@ -585,16 +584,14 @@ if ($postinst_hook) {
}
if (-d "/etc/kernel/postinst.d") {
print STDERR "Examining /etc/kernel/postinst.d.\n";
system ("run-parts --verbose --exit-on-error --arg=$version " .
system ("run-parts --report --exit-on-error --arg=$version " .
"--arg=$realimageloc$kimage-$version " .
"/etc/kernel/postinst.d") &&
die "Failed to process /etc/kernel/postinst.d";
}
if (-d "/etc/kernel/postinst.d/$version") {
print STDERR "Examining /etc/kernel/postinst.d/$version.\n";
system ("run-parts --verbose --exit-on-error --arg=$version " .
system ("run-parts --report --exit-on-error --arg=$version " .
"--arg=$realimageloc$kimage-$version " .
"/etc/kernel/postinst.d/$version") &&
die "Failed to process /etc/kernel/postinst.d/$version";

View File

@ -204,15 +204,13 @@ if ($postrm_hook) {
&run_hook("postrm", $postrm_hook);
}
if (-d "/etc/kernel/postrm.d") {
warn "Examining /etc/kernel/postrm.d .\n";
system ("run-parts --verbose --exit-on-error --arg=$version " .
system ("run-parts --report --exit-on-error --arg=$version " .
"--arg=$realimageloc$kimage-$version " .
"/etc/kernel/postrm.d") &&
die "Failed to process /etc/kernel/postrm.d";
}
if (-d "/etc/kernel/postrm.d/$version") {
warn "Examining /etc/kernel/postrm.d/$version .\n";
system ("run-parts --verbose --exit-on-error --arg=$version " .
system ("run-parts --report --exit-on-error --arg=$version " .
"--arg=$realimageloc$kimage-$version " .
"/etc/kernel/postrm.d/$version") &&
die "Failed to process /etc/kernel/postrm.d/$version";

View File

@ -102,15 +102,13 @@ if (-x "$preinst_hook") {
&run_hook("preinst", $preinst_hook);
}
if (-d "/etc/kernel/preinst.d") {
print STDERR "Examining /etc/kernel/preinst.d/\n";
system ("run-parts --verbose --exit-on-error --arg=$version" .
system ("run-parts --report --exit-on-error --arg=$version" .
" --arg=$realimageloc$kimage-$version" .
" /etc/kernel/preinst.d") &&
die "Failed to process /etc/kernel/preinst.d";
}
if (-d "/etc/kernel/preinst.d/$version") {
print STDERR "Examining /etc/kernel/preinst.d/$version.\n";
system ("run-parts --verbose --exit-on-error --arg=$version" .
system ("run-parts --report --exit-on-error --arg=$version" .
" --arg=$realimageloc$kimage-$version" .
" /etc/kernel/preinst.d/$version") &&
die "Failed to process /etc/kernel/preinst.d/$version";

View File

@ -143,14 +143,12 @@ if (-x "$prerm_hook") {
&run_hook("prerm", $prerm_hook);
}
if (-d "/etc/kernel/prerm.d") {
print STDERR "Examining /etc/kernel/prerm.d.\n";
system ("run-parts --verbose --exit-on-error --arg=$version " .
system ("run-parts --report --exit-on-error --arg=$version " .
"--arg=$realimageloc$kimage-$version /etc/kernel/prerm.d") &&
die "Failed to process /etc/kernel/prerm.d";
}
if (-d "/etc/kernel/prerm.d/$version") {
print STDERR "Examining /etc/kernel/prerm.d/$version.\n";
system ("run-parts --verbose --exit-on-error --arg=$version" .
system ("run-parts --report --exit-on-error --arg=$version" .
" --arg=$realimageloc$kimage-$version " .
"/etc/kernel/prerm.d/$version") &&
die "Failed to process /etc/kernel/prerm.d/$version";