4.8.2-300.pf2.hu.1
- Update to v4.8-pf2 - https://pf.natalenko.name/news/?p=207 There BFS CPU scheduler has been replaced by its successor, MuQSS. Detailes: https://ck-hack.blogspot.de/2016/10/muqss-multiple-queue-skiplist-scheduler.html - Change naming scheme to 4.8.0-300.pf2.hu.1 from 4.8.0-300.hu.1.pf2 - Merge branch 'f25' of ssh://pkgs.fedoraproject.org/kernel into f25-pf
This commit is contained in:
commit
4e2c9711d8
|
@ -0,0 +1,81 @@
|
|||
From a397ba829d7f8aff4c90af3704573a28ccd61a59 Mon Sep 17 00:00:00 2001
|
||||
From: Marcelo Cerri <marcelo.cerri@canonical.com>
|
||||
Date: Wed, 28 Sep 2016 13:42:09 -0300
|
||||
Subject: [PATCH] crypto: ghash-generic - move common definitions to a new
|
||||
header file
|
||||
|
||||
Move common values and types used by ghash-generic to a new header file
|
||||
so drivers can directly use ghash-generic as a fallback implementation.
|
||||
|
||||
Fixes: cc333cd68dfa ("crypto: vmx - Adding GHASH routines for VMX module")
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Marcelo Cerri <marcelo.cerri@canonical.com>
|
||||
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
---
|
||||
crypto/ghash-generic.c | 13 +------------
|
||||
include/crypto/ghash.h | 23 +++++++++++++++++++++++
|
||||
2 files changed, 24 insertions(+), 12 deletions(-)
|
||||
create mode 100644 include/crypto/ghash.h
|
||||
|
||||
diff --git a/crypto/ghash-generic.c b/crypto/ghash-generic.c
|
||||
index bac7099..12ad3e3 100644
|
||||
--- a/crypto/ghash-generic.c
|
||||
+++ b/crypto/ghash-generic.c
|
||||
@@ -14,24 +14,13 @@
|
||||
|
||||
#include <crypto/algapi.h>
|
||||
#include <crypto/gf128mul.h>
|
||||
+#include <crypto/ghash.h>
|
||||
#include <crypto/internal/hash.h>
|
||||
#include <linux/crypto.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
|
||||
-#define GHASH_BLOCK_SIZE 16
|
||||
-#define GHASH_DIGEST_SIZE 16
|
||||
-
|
||||
-struct ghash_ctx {
|
||||
- struct gf128mul_4k *gf128;
|
||||
-};
|
||||
-
|
||||
-struct ghash_desc_ctx {
|
||||
- u8 buffer[GHASH_BLOCK_SIZE];
|
||||
- u32 bytes;
|
||||
-};
|
||||
-
|
||||
static int ghash_init(struct shash_desc *desc)
|
||||
{
|
||||
struct ghash_desc_ctx *dctx = shash_desc_ctx(desc);
|
||||
diff --git a/include/crypto/ghash.h b/include/crypto/ghash.h
|
||||
new file mode 100644
|
||||
index 0000000..2a61c9b
|
||||
--- /dev/null
|
||||
+++ b/include/crypto/ghash.h
|
||||
@@ -0,0 +1,23 @@
|
||||
+/*
|
||||
+ * Common values for GHASH algorithms
|
||||
+ */
|
||||
+
|
||||
+#ifndef __CRYPTO_GHASH_H__
|
||||
+#define __CRYPTO_GHASH_H__
|
||||
+
|
||||
+#include <linux/types.h>
|
||||
+#include <crypto/gf128mul.h>
|
||||
+
|
||||
+#define GHASH_BLOCK_SIZE 16
|
||||
+#define GHASH_DIGEST_SIZE 16
|
||||
+
|
||||
+struct ghash_ctx {
|
||||
+ struct gf128mul_4k *gf128;
|
||||
+};
|
||||
+
|
||||
+struct ghash_desc_ctx {
|
||||
+ u8 buffer[GHASH_BLOCK_SIZE];
|
||||
+ u32 bytes;
|
||||
+};
|
||||
+
|
||||
+#endif
|
||||
--
|
||||
2.7.4
|
||||
|
|
@ -0,0 +1,103 @@
|
|||
From 80da44c29d997e28c4442825f35f4ac339813877 Mon Sep 17 00:00:00 2001
|
||||
From: Marcelo Cerri <marcelo.cerri@canonical.com>
|
||||
Date: Wed, 28 Sep 2016 13:42:10 -0300
|
||||
Subject: [PATCH] crypto: vmx - Fix memory corruption caused by p8_ghash
|
||||
|
||||
This patch changes the p8_ghash driver to use ghash-generic as a fixed
|
||||
fallback implementation. This allows the correct value of descsize to be
|
||||
defined directly in its shash_alg structure and avoids problems with
|
||||
incorrect buffer sizes when its state is exported or imported.
|
||||
|
||||
Reported-by: Jan Stancek <jstancek@redhat.com>
|
||||
Fixes: cc333cd68dfa ("crypto: vmx - Adding GHASH routines for VMX module")
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Marcelo Cerri <marcelo.cerri@canonical.com>
|
||||
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
---
|
||||
drivers/crypto/vmx/ghash.c | 31 ++++++++++++++++---------------
|
||||
1 file changed, 16 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/drivers/crypto/vmx/ghash.c b/drivers/crypto/vmx/ghash.c
|
||||
index 6c999cb0..27a94a1 100644
|
||||
--- a/drivers/crypto/vmx/ghash.c
|
||||
+++ b/drivers/crypto/vmx/ghash.c
|
||||
@@ -26,16 +26,13 @@
|
||||
#include <linux/hardirq.h>
|
||||
#include <asm/switch_to.h>
|
||||
#include <crypto/aes.h>
|
||||
+#include <crypto/ghash.h>
|
||||
#include <crypto/scatterwalk.h>
|
||||
#include <crypto/internal/hash.h>
|
||||
#include <crypto/b128ops.h>
|
||||
|
||||
#define IN_INTERRUPT in_interrupt()
|
||||
|
||||
-#define GHASH_BLOCK_SIZE (16)
|
||||
-#define GHASH_DIGEST_SIZE (16)
|
||||
-#define GHASH_KEY_LEN (16)
|
||||
-
|
||||
void gcm_init_p8(u128 htable[16], const u64 Xi[2]);
|
||||
void gcm_gmult_p8(u64 Xi[2], const u128 htable[16]);
|
||||
void gcm_ghash_p8(u64 Xi[2], const u128 htable[16],
|
||||
@@ -55,16 +52,11 @@ struct p8_ghash_desc_ctx {
|
||||
|
||||
static int p8_ghash_init_tfm(struct crypto_tfm *tfm)
|
||||
{
|
||||
- const char *alg;
|
||||
+ const char *alg = "ghash-generic";
|
||||
struct crypto_shash *fallback;
|
||||
struct crypto_shash *shash_tfm = __crypto_shash_cast(tfm);
|
||||
struct p8_ghash_ctx *ctx = crypto_tfm_ctx(tfm);
|
||||
|
||||
- if (!(alg = crypto_tfm_alg_name(tfm))) {
|
||||
- printk(KERN_ERR "Failed to get algorithm name.\n");
|
||||
- return -ENOENT;
|
||||
- }
|
||||
-
|
||||
fallback = crypto_alloc_shash(alg, 0, CRYPTO_ALG_NEED_FALLBACK);
|
||||
if (IS_ERR(fallback)) {
|
||||
printk(KERN_ERR
|
||||
@@ -78,10 +70,18 @@ static int p8_ghash_init_tfm(struct crypto_tfm *tfm)
|
||||
crypto_shash_set_flags(fallback,
|
||||
crypto_shash_get_flags((struct crypto_shash
|
||||
*) tfm));
|
||||
- ctx->fallback = fallback;
|
||||
|
||||
- shash_tfm->descsize = sizeof(struct p8_ghash_desc_ctx)
|
||||
- + crypto_shash_descsize(fallback);
|
||||
+ /* Check if the descsize defined in the algorithm is still enough. */
|
||||
+ if (shash_tfm->descsize < sizeof(struct p8_ghash_desc_ctx)
|
||||
+ + crypto_shash_descsize(fallback)) {
|
||||
+ printk(KERN_ERR
|
||||
+ "Desc size of the fallback implementation (%s) does not match the expected value: %lu vs %u\n",
|
||||
+ alg,
|
||||
+ shash_tfm->descsize - sizeof(struct p8_ghash_desc_ctx),
|
||||
+ crypto_shash_descsize(fallback));
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+ ctx->fallback = fallback;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -113,7 +113,7 @@ static int p8_ghash_setkey(struct crypto_shash *tfm, const u8 *key,
|
||||
{
|
||||
struct p8_ghash_ctx *ctx = crypto_tfm_ctx(crypto_shash_tfm(tfm));
|
||||
|
||||
- if (keylen != GHASH_KEY_LEN)
|
||||
+ if (keylen != GHASH_BLOCK_SIZE)
|
||||
return -EINVAL;
|
||||
|
||||
preempt_disable();
|
||||
@@ -211,7 +211,8 @@ struct shash_alg p8_ghash_alg = {
|
||||
.update = p8_ghash_update,
|
||||
.final = p8_ghash_final,
|
||||
.setkey = p8_ghash_setkey,
|
||||
- .descsize = sizeof(struct p8_ghash_desc_ctx),
|
||||
+ .descsize = sizeof(struct p8_ghash_desc_ctx)
|
||||
+ + sizeof(struct ghash_desc_ctx),
|
||||
.base = {
|
||||
.cra_name = "ghash",
|
||||
.cra_driver_name = "p8_ghash",
|
||||
--
|
||||
2.7.4
|
||||
|
File diff suppressed because it is too large
Load Diff
|
@ -76,3 +76,4 @@ firmware-Drop-WARN-from-usermodehelper_read_trylock-.patch
|
|||
|
||||
drm-i915-turn-off-wc-mmaps.patch
|
||||
|
||||
i8042-skip-selftest-asus-laptops.patch
|
||||
|
|
|
@ -101,7 +101,7 @@ CONFIG_ACPI_CUSTOM_METHOD=m
|
|||
CONFIG_ACPI_NFIT=m
|
||||
# CONFIG_ACPI_NFIT_DEBUG is not set
|
||||
CONFIG_PCC=y
|
||||
CONFIG_ACPI_CPPC_CPUFREQ=y
|
||||
# CONFIG_ACPI_CPPC_CPUFREQ is not set
|
||||
CONFIG_ACPI_PROCESSOR=y
|
||||
CONFIG_ACPI_THERMAL=y
|
||||
CONFIG_I2C_SCMI=m
|
||||
|
|
|
@ -209,7 +209,7 @@ CONFIG_I2C_SUN6I_P2WI=m
|
|||
CONFIG_GPIO_PCF857X=m
|
||||
CONFIG_TOUCHSCREEN_SUN4I=m
|
||||
CONFIG_MFD_AXP20X=y
|
||||
CONFIG_MFD_AXP20X_I2C=m
|
||||
CONFIG_MFD_AXP20X_I2C=y
|
||||
CONFIG_MFD_AXP20X_RSB=m
|
||||
CONFIG_AXP20X_POWER=m
|
||||
CONFIG_INPUT_AXP20X_PEK=m
|
||||
|
@ -404,8 +404,6 @@ CONFIG_RTC_DRV_ARMADA38X=m
|
|||
# CONFIG_CACHE_FEROCEON_L2 is not set
|
||||
# CONFIG_CACHE_FEROCEON_L2_WRITETHROUGH is not set
|
||||
CONFIG_LEDS_NS2=m
|
||||
CONFIG_SERIAL_MVEBU_UART=y
|
||||
# CONFIG_SERIAL_MVEBU_CONSOLE is not set
|
||||
# CONFIG_PCIE_ARMADA_8K is not set
|
||||
|
||||
# DRM panels
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
CONFIG_IOSCHED_BFQ=m
|
||||
|
||||
CONFIG_SCHED_BFS=y
|
||||
# BFS successor see https://pf.natalenko.name/news/?p=207
|
||||
CONFIG_SCHED_MUQSS=y
|
||||
|
||||
CONFIG_SMT_NICE=n
|
||||
CONFIG_CGROUP_BFQIO=y
|
||||
|
@ -50,7 +52,6 @@ CONFIG_FTRACE_MCOUNT_RECORD=y
|
|||
# CONFIG_FTRACE_STARTUP_TEST is not set
|
||||
|
||||
# Ulatencyd: Settings from https://wiki.archlinux.org/index.php/Ulatencyd
|
||||
PROC_EVENTS=y
|
||||
CONFIG_CGROUPS=y
|
||||
CONFIG_CGROUP_FREEZER=y
|
||||
CONFIG_CGROUP_DEVICE=y
|
||||
|
|
|
@ -0,0 +1,373 @@
|
|||
From 930e19248e9b61da36c967687ca79c4d5f977919 Mon Sep 17 00:00:00 2001
|
||||
From: Marcos Paulo de Souza <marcos.souza.org@gmail.com>
|
||||
Date: Sat, 1 Oct 2016 12:07:35 -0700
|
||||
Subject: Input: i8042 - skip selftest on ASUS laptops
|
||||
|
||||
On suspend/resume cycle, selftest is executed to reset i8042 controller.
|
||||
But when this is done in Asus devices, subsequent calls to detect/init
|
||||
functions to elantech driver fails. Skipping selftest fixes this problem.
|
||||
|
||||
An easier step to reproduce this problem is adding i8042.reset=1 as a
|
||||
kernel parameter. On Asus laptops, it'll make the system to start with the
|
||||
touchpad already stuck, since psmouse_probe forcibly calls the selftest
|
||||
function.
|
||||
|
||||
This patch was inspired by John Hiesey's change[1], but, since this problem
|
||||
affects a lot of models of Asus, let's avoid running selftests on them.
|
||||
|
||||
All models affected by this problem:
|
||||
A455LD
|
||||
K401LB
|
||||
K501LB
|
||||
K501LX
|
||||
R409L
|
||||
V502LX
|
||||
X302LA
|
||||
X450LCP
|
||||
X450LD
|
||||
X455LAB
|
||||
X455LDB
|
||||
X455LF
|
||||
Z450LA
|
||||
|
||||
[1]: https://marc.info/?l=linux-input&m=144312209020616&w=2
|
||||
|
||||
Fixes: "ETPS/2 Elantech Touchpad dies after resume from suspend"
|
||||
(https://bugzilla.kernel.org/show_bug.cgi?id=107971)
|
||||
|
||||
Signed-off-by: Marcos Paulo de Souza <marcos.souza.org@gmail.com>
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
|
||||
---
|
||||
Documentation/kernel-parameters.txt | 9 +++-
|
||||
drivers/input/serio/i8042-io.h | 2 +-
|
||||
drivers/input/serio/i8042-ip22io.h | 2 +-
|
||||
drivers/input/serio/i8042-ppcio.h | 2 +-
|
||||
drivers/input/serio/i8042-sparcio.h | 2 +-
|
||||
drivers/input/serio/i8042-unicore32io.h | 2 +-
|
||||
drivers/input/serio/i8042-x86ia64io.h | 96 +++++++++++++++++++++++++++++++--
|
||||
drivers/input/serio/i8042.c | 55 +++++++++++++++----
|
||||
8 files changed, 150 insertions(+), 20 deletions(-)
|
||||
|
||||
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
|
||||
index 0b3de80..3475b32 100644
|
||||
--- a/Documentation/kernel-parameters.txt
|
||||
+++ b/Documentation/kernel-parameters.txt
|
||||
@@ -1409,7 +1409,14 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
|
||||
i8042.nopnp [HW] Don't use ACPIPnP / PnPBIOS to discover KBD/AUX
|
||||
controllers
|
||||
i8042.notimeout [HW] Ignore timeout condition signalled by controller
|
||||
- i8042.reset [HW] Reset the controller during init and cleanup
|
||||
+ i8042.reset [HW] Reset the controller during init, cleanup and
|
||||
+ suspend-to-ram transitions, only during s2r
|
||||
+ transitions, or never reset
|
||||
+ Format: { 1 | Y | y | 0 | N | n }
|
||||
+ 1, Y, y: always reset controller
|
||||
+ 0, N, n: don't ever reset controller
|
||||
+ Default: only on s2r transitions on x86; most other
|
||||
+ architectures force reset to be always executed
|
||||
i8042.unlock [HW] Unlock (ignore) the keylock
|
||||
i8042.kbdreset [HW] Reset device connected to KBD port
|
||||
|
||||
diff --git a/drivers/input/serio/i8042-io.h b/drivers/input/serio/i8042-io.h
|
||||
index a5eed2a..34da81c 100644
|
||||
--- a/drivers/input/serio/i8042-io.h
|
||||
+++ b/drivers/input/serio/i8042-io.h
|
||||
@@ -81,7 +81,7 @@ static inline int i8042_platform_init(void)
|
||||
return -EBUSY;
|
||||
#endif
|
||||
|
||||
- i8042_reset = 1;
|
||||
+ i8042_reset = I8042_RESET_ALWAYS;
|
||||
return 0;
|
||||
}
|
||||
|
||||
diff --git a/drivers/input/serio/i8042-ip22io.h b/drivers/input/serio/i8042-ip22io.h
|
||||
index ee1ad27..08a1c10 100644
|
||||
--- a/drivers/input/serio/i8042-ip22io.h
|
||||
+++ b/drivers/input/serio/i8042-ip22io.h
|
||||
@@ -61,7 +61,7 @@ static inline int i8042_platform_init(void)
|
||||
return -EBUSY;
|
||||
#endif
|
||||
|
||||
- i8042_reset = 1;
|
||||
+ i8042_reset = I8042_RESET_ALWAYS;
|
||||
|
||||
return 0;
|
||||
}
|
||||
diff --git a/drivers/input/serio/i8042-ppcio.h b/drivers/input/serio/i8042-ppcio.h
|
||||
index f708c75..1aabea4 100644
|
||||
--- a/drivers/input/serio/i8042-ppcio.h
|
||||
+++ b/drivers/input/serio/i8042-ppcio.h
|
||||
@@ -44,7 +44,7 @@ static inline void i8042_write_command(int val)
|
||||
|
||||
static inline int i8042_platform_init(void)
|
||||
{
|
||||
- i8042_reset = 1;
|
||||
+ i8042_reset = I8042_RESET_ALWAYS;
|
||||
return 0;
|
||||
}
|
||||
|
||||
diff --git a/drivers/input/serio/i8042-sparcio.h b/drivers/input/serio/i8042-sparcio.h
|
||||
index afcd1c1..6231d63 100644
|
||||
--- a/drivers/input/serio/i8042-sparcio.h
|
||||
+++ b/drivers/input/serio/i8042-sparcio.h
|
||||
@@ -130,7 +130,7 @@ static int __init i8042_platform_init(void)
|
||||
}
|
||||
}
|
||||
|
||||
- i8042_reset = 1;
|
||||
+ i8042_reset = I8042_RESET_ALWAYS;
|
||||
|
||||
return 0;
|
||||
}
|
||||
diff --git a/drivers/input/serio/i8042-unicore32io.h b/drivers/input/serio/i8042-unicore32io.h
|
||||
index 73f5cc1..4557475 100644
|
||||
--- a/drivers/input/serio/i8042-unicore32io.h
|
||||
+++ b/drivers/input/serio/i8042-unicore32io.h
|
||||
@@ -61,7 +61,7 @@ static inline int i8042_platform_init(void)
|
||||
if (!request_mem_region(I8042_REGION_START, I8042_REGION_SIZE, "i8042"))
|
||||
return -EBUSY;
|
||||
|
||||
- i8042_reset = 1;
|
||||
+ i8042_reset = I8042_RESET_ALWAYS;
|
||||
return 0;
|
||||
}
|
||||
|
||||
diff --git a/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8042-x86ia64io.h
|
||||
index 68f5f4a..f4bfb4b 100644
|
||||
--- a/drivers/input/serio/i8042-x86ia64io.h
|
||||
+++ b/drivers/input/serio/i8042-x86ia64io.h
|
||||
@@ -510,6 +510,90 @@ static const struct dmi_system_id __initconst i8042_dmi_nomux_table[] = {
|
||||
{ }
|
||||
};
|
||||
|
||||
+/*
|
||||
+ * On some Asus laptops, just running self tests cause problems.
|
||||
+ */
|
||||
+static const struct dmi_system_id i8042_dmi_noselftest_table[] = {
|
||||
+ {
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "A455LD"),
|
||||
+ },
|
||||
+ },
|
||||
+ {
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "K401LB"),
|
||||
+ },
|
||||
+ },
|
||||
+ {
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "K501LB"),
|
||||
+ },
|
||||
+ },
|
||||
+ {
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "K501LX"),
|
||||
+ },
|
||||
+ },
|
||||
+ {
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "R409L"),
|
||||
+ },
|
||||
+ },
|
||||
+ {
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "V502LX"),
|
||||
+ },
|
||||
+ },
|
||||
+ {
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "X302LA"),
|
||||
+ },
|
||||
+ },
|
||||
+ {
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "X450LCP"),
|
||||
+ },
|
||||
+ },
|
||||
+ {
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "X450LD"),
|
||||
+ },
|
||||
+ },
|
||||
+ {
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "X455LAB"),
|
||||
+ },
|
||||
+ },
|
||||
+ {
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "X455LDB"),
|
||||
+ },
|
||||
+ },
|
||||
+ {
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "X455LF"),
|
||||
+ },
|
||||
+ },
|
||||
+ {
|
||||
+ .matches = {
|
||||
+ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
|
||||
+ DMI_MATCH(DMI_PRODUCT_NAME, "Z450LA"),
|
||||
+ },
|
||||
+ },
|
||||
+ { }
|
||||
+};
|
||||
static const struct dmi_system_id __initconst i8042_dmi_reset_table[] = {
|
||||
{
|
||||
/* MSI Wind U-100 */
|
||||
@@ -1072,12 +1156,18 @@ static int __init i8042_platform_init(void)
|
||||
return retval;
|
||||
|
||||
#if defined(__ia64__)
|
||||
- i8042_reset = true;
|
||||
+ i8042_reset = I8042_RESET_ALWAYS;
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_X86
|
||||
- if (dmi_check_system(i8042_dmi_reset_table))
|
||||
- i8042_reset = true;
|
||||
+ /* Honor module parameter when value is not default */
|
||||
+ if (i8042_reset == I8042_RESET_DEFAULT) {
|
||||
+ if (dmi_check_system(i8042_dmi_reset_table))
|
||||
+ i8042_reset = I8042_RESET_ALWAYS;
|
||||
+
|
||||
+ if (dmi_check_system(i8042_dmi_noselftest_table))
|
||||
+ i8042_reset = I8042_RESET_NEVER;
|
||||
+ }
|
||||
|
||||
if (dmi_check_system(i8042_dmi_noloop_table))
|
||||
i8042_noloop = true;
|
||||
diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
|
||||
index b4d3408..674a760 100644
|
||||
--- a/drivers/input/serio/i8042.c
|
||||
+++ b/drivers/input/serio/i8042.c
|
||||
@@ -48,9 +48,39 @@ static bool i8042_unlock;
|
||||
module_param_named(unlock, i8042_unlock, bool, 0);
|
||||
MODULE_PARM_DESC(unlock, "Ignore keyboard lock.");
|
||||
|
||||
-static bool i8042_reset;
|
||||
-module_param_named(reset, i8042_reset, bool, 0);
|
||||
-MODULE_PARM_DESC(reset, "Reset controller during init and cleanup.");
|
||||
+enum i8042_controller_reset_mode {
|
||||
+ I8042_RESET_NEVER,
|
||||
+ I8042_RESET_ALWAYS,
|
||||
+ I8042_RESET_ON_S2RAM,
|
||||
+#define I8042_RESET_DEFAULT I8042_RESET_ON_S2RAM
|
||||
+};
|
||||
+static enum i8042_controller_reset_mode i8042_reset = I8042_RESET_DEFAULT;
|
||||
+static int i8042_set_reset(const char *val, const struct kernel_param *kp)
|
||||
+{
|
||||
+ enum i8042_controller_reset_mode *arg = kp->arg;
|
||||
+ int error;
|
||||
+ bool reset;
|
||||
+
|
||||
+ if (val) {
|
||||
+ error = kstrtobool(val, &reset);
|
||||
+ if (error)
|
||||
+ return error;
|
||||
+ } else {
|
||||
+ reset = true;
|
||||
+ }
|
||||
+
|
||||
+ *arg = reset ? I8042_RESET_ALWAYS : I8042_RESET_NEVER;
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static const struct kernel_param_ops param_ops_reset_param = {
|
||||
+ .flags = KERNEL_PARAM_OPS_FL_NOARG,
|
||||
+ .set = i8042_set_reset,
|
||||
+};
|
||||
+#define param_check_reset_param(name, p) \
|
||||
+ __param_check(name, p, enum i8042_controller_reset_mode)
|
||||
+module_param_named(reset, i8042_reset, reset_param, 0);
|
||||
+MODULE_PARM_DESC(reset, "Reset controller on resume, cleanup or both");
|
||||
|
||||
static bool i8042_direct;
|
||||
module_param_named(direct, i8042_direct, bool, 0);
|
||||
@@ -1019,7 +1049,7 @@ static int i8042_controller_init(void)
|
||||
* Reset the controller and reset CRT to the original value set by BIOS.
|
||||
*/
|
||||
|
||||
-static void i8042_controller_reset(bool force_reset)
|
||||
+static void i8042_controller_reset(bool s2r_wants_reset)
|
||||
{
|
||||
i8042_flush();
|
||||
|
||||
@@ -1044,8 +1074,10 @@ static void i8042_controller_reset(bool force_reset)
|
||||
* Reset the controller if requested.
|
||||
*/
|
||||
|
||||
- if (i8042_reset || force_reset)
|
||||
+ if (i8042_reset == I8042_RESET_ALWAYS ||
|
||||
+ (i8042_reset == I8042_RESET_ON_S2RAM && s2r_wants_reset)) {
|
||||
i8042_controller_selftest();
|
||||
+ }
|
||||
|
||||
/*
|
||||
* Restore the original control register setting.
|
||||
@@ -1110,7 +1142,7 @@ static void i8042_dritek_enable(void)
|
||||
* before suspending.
|
||||
*/
|
||||
|
||||
-static int i8042_controller_resume(bool force_reset)
|
||||
+static int i8042_controller_resume(bool s2r_wants_reset)
|
||||
{
|
||||
int error;
|
||||
|
||||
@@ -1118,7 +1150,8 @@ static int i8042_controller_resume(bool force_reset)
|
||||
if (error)
|
||||
return error;
|
||||
|
||||
- if (i8042_reset || force_reset) {
|
||||
+ if (i8042_reset == I8042_RESET_ALWAYS ||
|
||||
+ (i8042_reset == I8042_RESET_ON_S2RAM && s2r_wants_reset)) {
|
||||
error = i8042_controller_selftest();
|
||||
if (error)
|
||||
return error;
|
||||
@@ -1195,7 +1228,7 @@ static int i8042_pm_resume_noirq(struct device *dev)
|
||||
|
||||
static int i8042_pm_resume(struct device *dev)
|
||||
{
|
||||
- bool force_reset;
|
||||
+ bool want_reset;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < I8042_NUM_PORTS; i++) {
|
||||
@@ -1218,9 +1251,9 @@ static int i8042_pm_resume(struct device *dev)
|
||||
* off control to the platform firmware, otherwise we can simply restore
|
||||
* the mode.
|
||||
*/
|
||||
- force_reset = pm_resume_via_firmware();
|
||||
+ want_reset = pm_resume_via_firmware();
|
||||
|
||||
- return i8042_controller_resume(force_reset);
|
||||
+ return i8042_controller_resume(want_reset);
|
||||
}
|
||||
|
||||
static int i8042_pm_thaw(struct device *dev)
|
||||
@@ -1481,7 +1514,7 @@ static int __init i8042_probe(struct platform_device *dev)
|
||||
|
||||
i8042_platform_device = dev;
|
||||
|
||||
- if (i8042_reset) {
|
||||
+ if (i8042_reset == I8042_RESET_ALWAYS) {
|
||||
error = i8042_controller_selftest();
|
||||
if (error)
|
||||
return error;
|
||||
--
|
||||
cgit v0.12
|
||||
|
52
kernel.spec
52
kernel.spec
|
@ -24,7 +24,7 @@ Summary: The Linux kernel
|
|||
%global zipsed -e 's/\.ko$/\.ko.xz/'
|
||||
%endif
|
||||
|
||||
%define buildid .hu.1.pf1
|
||||
%define buildid .pf2.hu.1
|
||||
|
||||
# baserelease defines which build revision of this kernel version we're
|
||||
# building. We used to call this fedora_build, but the magical name
|
||||
|
@ -54,8 +54,8 @@ Summary: The Linux kernel
|
|||
%if 0%{?released_kernel}
|
||||
|
||||
# Do we have a -stable update to apply?
|
||||
#+Hu Pf against 4.8.0 v4.8-pf1: https://pf.natalenko.name/news/?p=204
|
||||
%define stable_update 1
|
||||
#+Hu Pf against 4.8.2 v4.8-pf2: https://pf.natalenko.name/news/?p=207
|
||||
%define stable_update 2
|
||||
# Set rpm version accordingly
|
||||
%if 0%{?stable_update}
|
||||
%define stablerev %{stable_update}
|
||||
|
@ -472,7 +472,7 @@ Source2001: cpupower.config
|
|||
%if 0%{?stable_update}
|
||||
%if 0%{?stable_base}
|
||||
#*Hu %%define stable_patch_00 patch-4.%%{base_sublevel}.%%{stable_base}.xz
|
||||
%global stable_patch_00 https://pf.natalenko.name/sources/4.8/patch-4.8-pf1.xz
|
||||
%global stable_patch_00 https://pf.natalenko.name/sources/4.8/patch-4.8-pf2.xz
|
||||
Source5000: %{stable_patch_00}
|
||||
%endif
|
||||
|
||||
|
@ -525,6 +525,8 @@ Patch431: bcm2837-initial-support.patch
|
|||
|
||||
Patch432: bcm283x-vc4-fixes.patch
|
||||
|
||||
Patch433: AllWinner-net-emac.patch
|
||||
|
||||
Patch460: lib-cpumask-Make-CPUMASK_OFFSTACK-usable-without-deb.patch
|
||||
|
||||
Patch466: input-kill-stupid-messages.patch
|
||||
|
@ -603,6 +605,8 @@ Patch502: firmware-Drop-WARN-from-usermodehelper_read_trylock-.patch
|
|||
|
||||
# Patch503: drm-i915-turn-off-wc-mmaps.patch
|
||||
|
||||
Patch504: i8042-skip-selftest-asus-laptops.patch
|
||||
|
||||
Patch508: kexec-uefi-copy-secure_boot-flag-in-boot-params.patch
|
||||
|
||||
#CVE-2016-3134 rhbz 1317383 1317384
|
||||
|
@ -632,6 +636,10 @@ Patch850: arcmsr-buffer-overflow-in-archmsr_iop_message_xfer.patch
|
|||
#rhbz 1366842
|
||||
Patch851: drm-virtio-reinstate-drm_virtio_set_busid.patch
|
||||
|
||||
# Fix memory corruption caused by p8_ghash
|
||||
Patch852: 0001-crypto-ghash-generic-move-common-definitions-to-a-ne.patch
|
||||
Patch853: 0001-crypto-vmx-Fix-memory-corruption-caused-by-p8_ghash.patch
|
||||
|
||||
# END OF PATCH DEFINITIONS
|
||||
|
||||
%endif
|
||||
|
@ -2173,6 +2181,30 @@ fi
|
|||
#
|
||||
#
|
||||
%changelog
|
||||
* Sat Oct 22 2016 Pavel Alexeev <Pahan@Hubbitus.info> - 4.8.0-300.pf2.hu.1
|
||||
- Update to v4.8-pf2 - https://pf.natalenko.name/news/?p=207
|
||||
There BFS CPU scheduler has been replaced by its successor, MuQSS. Detailes: https://ck-hack.blogspot.de/2016/10/muqss-multiple-queue-skiplist-scheduler.html
|
||||
- Change naming scheme to 4.8.0-300.pf2.hu.1 from 4.8.0-300.hu.1.pf2
|
||||
|
||||
* Thu Oct 20 2016 Justin M. Forbes <jforbes@fedoraproject.org> - 4.8.3-300
|
||||
- Linux v4.8.3
|
||||
- CVE-2016-5195 (rhbz 1384344 1387080)
|
||||
|
||||
* Tue Oct 18 2016 Justin M. Forbes <jforbes@fedoraproject.org>
|
||||
- Fix memory corruption caused by p8_ghash
|
||||
- Make __xfs_xattr_put_listen preperly report errors (rhbz 1384606)
|
||||
|
||||
* Tue Oct 18 2016 Peter Robinson <pbrobinson@fedoraproject.org>
|
||||
- Disable ACPI_CPPC_CPUFREQ on aarch64
|
||||
- Add ethernet driver for AllWinner sun8i-emac (H3/OrangePi and Pine64)
|
||||
|
||||
* Mon Oct 17 2016 Justin M. Forbes <jforbes@fedoraproject.org> - 4.8.2-300
|
||||
- Linux v4.8.2
|
||||
- i8042 - skip selftest on ASUS laptops
|
||||
|
||||
* Sat Oct 15 2016 Peter Robinson <pbrobinson@fedoraproject.org>
|
||||
- Build in AXP20X_I2C (should fix rhbz 1352140)
|
||||
|
||||
* Tue Oct 11 2016 Pavel Alexeev <Pahan@Hubbitus.info> - 4.8.0-1.hu.1.pf1
|
||||
- Step to build kernels for Fedora 25.
|
||||
- Use new pf patch v4.8-pf1 - https://pf.natalenko.name/news/?p=204
|
||||
|
@ -2260,10 +2292,6 @@ fi
|
|||
- Fix for incorrect return checking in cpupower (rhbz 1374212)
|
||||
- Let iio tools build on older kernels
|
||||
|
||||
* Tue Sep 13 2016 Pavel Alexeev <Pahan@Hubbitus.info> - 4.7.3-200.hu.1.pf3
|
||||
- Pull Fedora updates to kernel 4.7.3.
|
||||
- Update pf patch to v4.7-pf3 (https://pf.natalenko.name/news/?p=193)
|
||||
|
||||
* Tue Sep 13 2016 Justin M. Forbes <jforbes@fedoraproject.org> - 4.8.0-0.rc6.git1.1
|
||||
- Linux v4.8-rc6-147-ge8988e0
|
||||
- Reenable debugging options.
|
||||
|
@ -2594,10 +2622,6 @@ fi
|
|||
- Linux v4.7-rc2
|
||||
- Disable debugging options.
|
||||
|
||||
#* Sun Jun 05 2016 Pavel Alexeev <Pahan@Hubbitus.info> - 4.5.6-200.hu.1.pf4
|
||||
#- 4.5.6-200.hu.1.pf4
|
||||
#- Pf v4.5-pf4 https://pf.natalenko.name/news/?p=177
|
||||
|
||||
* Fri Jun 03 2016 Laura Abbott <labbott@redhat.com> - 4.7.0-0.rc1.git4.1
|
||||
- Linux v4.7-rc1-122-g4340fa5
|
||||
|
||||
|
@ -2849,10 +2873,6 @@ fi
|
|||
- Linux v4.5-11787-ga24e3d414e59
|
||||
- akpm, kvm, rdma
|
||||
|
||||
#* Wed Mar 23 2016 Pavel Alexeev <Pahan@Hubbitus.info> - 4.4.5-300.hu.1.pf8
|
||||
#- Merge upstream changes (4.4.6).
|
||||
#- Update pf patch to v4.4-pf8, but it stick on 4.4.5 (https://pf.natalenko.name/news/?p=166, https://pf.natalenko.name/news/?p=165)
|
||||
|
||||
* Wed Mar 23 2016 Peter Robinson <pbrobinson@fedoraproject.org>
|
||||
- Fix Tegra Jetson TK1
|
||||
|
||||
|
|
BIN
patch-4.8-pf1.xz
BIN
patch-4.8-pf1.xz
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,12 @@
|
|||
#!/bin/sh
|
||||
# Emulate the changelog part of rpmdev-bumpspec without the bumping of the
|
||||
# rev. Because Laura keeps typoing her name and the date.
|
||||
|
||||
CURDATE=`date +"%a %b %d %Y"`
|
||||
PACKAGER=`rpmdev-packager`
|
||||
CHANGELOG="%changelog\n* $CURDATE $PACKAGER\n- $1\n"
|
||||
|
||||
awk -v CHANGE="$CHANGELOG" '/%changelog/ {print CHANGE} \
|
||||
!/%changelog/ { print $0 }' \
|
||||
< kernel.spec > kernel.spec.tmp
|
||||
mv kernel.spec.tmp kernel.spec
|
|
@ -0,0 +1,10 @@
|
|||
#!/bin/sh
|
||||
# rpmdev-bumpspec 'helpfully' bumps the release which we don't always want.
|
||||
# This script fixes it up.
|
||||
|
||||
RELEASE=`grep "%global baserelease" kernel.spec | cut -d ' ' -f 3`
|
||||
export RELEASE=$(($RELEASE-1))
|
||||
perl -p -i -e 's|%global baserelease.*|%global baserelease $ENV{'RELEASE'}|' kernel.spec
|
||||
TODAY=`date +"%a %b %d %Y"`
|
||||
awk -v DATE="$TODAY" 'START { marked = 0; } $0 ~ DATE { if (marked == 1) { print $0 } else {out=$1; for(i = 2; i <= NF - 2; i++) { out=out" "$i } print out; marked = 1; } } $0 !~ DATE { print $0; }' < kernel.spec > kernel.spec.tmp
|
||||
mv kernel.spec.tmp kernel.spec
|
|
@ -0,0 +1,8 @@
|
|||
VER=$(grep patch sources | head -n1 | awk '{ print $2 }' | sed s/patch-// | sed s/-git.*// | sed s/.xz//)
|
||||
|
||||
if [ -z "$VER" ] ;
|
||||
then
|
||||
VER=$(grep linux sources | head -1 | awk '{ print $2 }' | sed s/linux-// | sed s/.tar.xz//)
|
||||
fi
|
||||
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
#!/bin/sh
|
||||
# Generate a commit for a rawhide RC release
|
||||
|
||||
source scripts/kernel-version.sh
|
||||
|
||||
make release
|
||||
# fixup the release because rpmdev-bumpspec *sigh*
|
||||
scripts/fixup-bumpspec.sh
|
||||
fedpkg commit -c
|
||||
|
||||
# Figure out what is our RC
|
||||
RC=`grep "%define rcrev" kernel.spec| cut -d ' ' -f 3`
|
||||
RC=$(($RC+1))
|
||||
BASE=`grep "%define base_sublevel" kernel.spec| cut -d ' ' -f 3`
|
||||
|
||||
# Kill all patches
|
||||
awk '!/patch/ { print $0 }' < sources > sources.tmp
|
||||
mv sources.tmp sources
|
||||
|
||||
# Grab the tarball
|
||||
if [ ! -f patch-4.$BASE-rc$RC.xz ]; then
|
||||
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/testing/patch-4.$BASE-rc$RC.xz
|
||||
if [ ! $? -eq 0 ]; then
|
||||
exit 1
|
||||
fi
|
||||
fedpkg upload patch-4.$BASE-rc$RC.xz
|
||||
fi
|
||||
|
||||
# bump rcrev in the spec and set git snapshot to 0
|
||||
RC=$RC perl -p -i -e 's|%define rcrev.*|%global rcrev $ENV{'RC'}|' kernel.spec
|
||||
|
||||
perl -p -i -e 's|%define gitrev.*|%define gitrev 0|' kernel.spec
|
||||
|
||||
perl -p -i -e 's|%global baserelease.*|%global baserelease 0|' kernel.spec
|
||||
|
||||
rpmdev-bumpspec -c "Linux v4.$BASE-rc$RC" kernel.spec
|
|
@ -0,0 +1,59 @@
|
|||
#!/bin/sh
|
||||
# A coffeeproof rawhide script. You should be able to run this before the
|
||||
# coffee has kicked in and generate a good rawhide commit.
|
||||
#
|
||||
# - Updates the local Fedora tree to master and verifies that you are working
|
||||
# off of the correct master
|
||||
# - Updates the upstream tree to the latest master.
|
||||
# - Generates a git snapshot via generate-git-snapshot.sh
|
||||
# - Clears out old git snapshots from the sources
|
||||
# - Uploads the new snapshot
|
||||
|
||||
source scripts/kernel-version.sh
|
||||
|
||||
git fetch origin
|
||||
if [ "$(git rev-parse origin/master)" != "$(git rev-parse HEAD)" ]; then
|
||||
echo "I just did a git fetch and this branch does not match master"
|
||||
echo "Re-check out this branch to work off of the latest master"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -d "$LINUX_GIT" ]; then
|
||||
echo "error: set \$LINUX_GIT to point at an upstream git tree"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
git -C $LINUX_GIT pull
|
||||
if [ ! $? -eq 0 ]; then
|
||||
echo "Git pull failed. Is your tree clean/correct?"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
git -C $LINUX_GIT describe --tags HEAD | grep -q "\-g"
|
||||
if [ ! $? -eq 0 ]; then
|
||||
echo "Trying to snapshot off of a tagged git."
|
||||
echo "I don't think this is what you want"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$(git -C $LINUX_GIT rev-parse origin/master)" == `cat gitrev` ]; then
|
||||
echo "Last snapshot commit matches current master. Nothing to do"
|
||||
echo "\o/"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
GIT=`grep "%define gitrev" kernel.spec | cut -d ' ' -f 3`
|
||||
if [ "$GIT" -eq 0 ]; then
|
||||
make debug
|
||||
./scripts/fixup-bumpspec.sh
|
||||
fedpkg commit -c
|
||||
fi
|
||||
|
||||
./scripts/generate-git-snapshot.sh
|
||||
|
||||
#Nuke the old patch from the source
|
||||
awk '!/git/ { print $0 }' < sources > sources.tmp
|
||||
mv sources.tmp sources
|
||||
|
||||
GIT=`grep "%define gitrev" kernel.spec | cut -d ' ' -f 3`
|
||||
fedpkg upload patch-$VER-git$GIT.xz
|
|
@ -0,0 +1,67 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# Author: Laura Abbott <labbott@fedoraproject.org>
|
||||
#
|
||||
# Apply a stable patch update to the Fedora tree. This takes care of
|
||||
# - Downloading the patch from kernel.org
|
||||
# - Uploading the source file
|
||||
# - Removing old patch files
|
||||
# - Updating the spec file stable version
|
||||
# - Adding a proper changelog entry
|
||||
#
|
||||
# Based on steps from https://fedoraproject.org/wiki/Kernel/DayToDay#Stable_kernel_update
|
||||
#
|
||||
# Args: Stable version to update (e.g. 4.7.7, 4.8.1)
|
||||
|
||||
if [ $# -lt 1 ]; then
|
||||
echo "Need a version"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
VERSION=`echo $1 | cut -d . -f 1`
|
||||
if [ -z $VERSION ]; then
|
||||
echo "Malformed version $1"
|
||||
exit 1
|
||||
fi
|
||||
PATCHLEVEL=`echo $1 | cut -d . -f 2`
|
||||
if [ -z $VERSION ]; then
|
||||
echo "Malformed version $1"
|
||||
exit 1
|
||||
fi
|
||||
SUBLEVEL=`echo $1 | cut -d . -f 3`
|
||||
if [ -z $VERSION ]; then
|
||||
echo "Malformed version $1"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -f patch-$1.xz ]; then
|
||||
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/patch-$1.xz
|
||||
if [ ! $? -eq 0 ]; then
|
||||
echo "Download fail"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
grep $1 sources &> /dev/null
|
||||
if [ ! $? -eq 0 ]; then
|
||||
fedpkg upload patch-$1.xz
|
||||
|
||||
# Cryptic awk: search for the previous patch level (if one exists) and
|
||||
# remove it from the source file
|
||||
awk -v VER=$VERSION.$PATCHLEVEL.$((SUBLEVEL-1)) '$0 !~ VER { print $0; }' < sources > sources.tmp
|
||||
mv sources.tmp sources
|
||||
fi
|
||||
|
||||
# Update the stable level
|
||||
awk -v STABLE=$SUBLEVEL '/%define stable_update/ \
|
||||
{ print "%define stable_update " STABLE } \
|
||||
!/%define stable_update/ { print $0 }' \
|
||||
< kernel.spec > kernel.spec.tmp
|
||||
mv kernel.spec.tmp kernel.spec
|
||||
|
||||
# Reset the base release for use with rpmdev-bumpspec
|
||||
BASERELEASE=`cat kernel.spec | grep "%global baserelease" | cut -d ' ' -f 3 | head -c 1`00
|
||||
BASERELEASE=$(($BASERELEASE-1))
|
||||
BASERELEASE=$BASERELEASE perl -p -i -e 's|%global baserelease.*|%global baserelease $ENV{'BASERELEASE'}|' kernel.spec
|
||||
|
||||
rpmdev-bumpspec -c "Linux v$1" kernel.spec
|
Loading…
Reference in New Issue