mirror of
https://github.com/dynup/kpatch
synced 2024-12-19 20:00:00 +00:00
11df5340c9
Add a RHEL reproducer that causes a kpatch-build to fail when the final module references a symbol with a different CRC than the original kernel. Signed-off-by: Julien Thierry <jthierry@redhat.com>
52 lines
1.4 KiB
Diff
52 lines
1.4 KiB
Diff
From bcb86fa4e9c31379a9e2716eae29cd53ccca064f Mon Sep 17 00:00:00 2001
|
|
From: Julien Thierry <jthierry@redhat.com>
|
|
Date: Wed, 6 May 2020 14:30:57 +0100
|
|
Subject: [PATCH] Symbol version change
|
|
|
|
This change causes:
|
|
1) Some exported symbols in drivers/base/core.c to see their CRCs
|
|
change.
|
|
2) Changes usb_get_dev() referencing a get_device() whose CRC has
|
|
changed, causing the symbol and the new CRC to be included in the
|
|
__version section of the final module.
|
|
|
|
This makes the final module unloadable for the target kernel.
|
|
|
|
See "Exported symbol versioning" of the patch author guide for more
|
|
detail.
|
|
|
|
---
|
|
drivers/base/core.c | 2 ++
|
|
drivers/usb/core/usb.c | 2 ++
|
|
2 files changed, 4 insertions(+)
|
|
|
|
diff --git a/drivers/base/core.c b/drivers/base/core.c
|
|
index b9a71137208..4af27e069c2 100644
|
|
--- a/drivers/base/core.c
|
|
+++ b/drivers/base/core.c
|
|
@@ -31,6 +31,8 @@
|
|
#include "base.h"
|
|
#include "power/power.h"
|
|
|
|
+#include <linux/blktrace_api.h>
|
|
+
|
|
#ifdef CONFIG_SYSFS_DEPRECATED
|
|
#ifdef CONFIG_SYSFS_DEPRECATED_V2
|
|
long sysfs_deprecated = 1;
|
|
diff --git a/drivers/usb/core/usb.c b/drivers/usb/core/usb.c
|
|
index f9db3660999..bece0bf4f5a 100644
|
|
--- a/drivers/usb/core/usb.c
|
|
+++ b/drivers/usb/core/usb.c
|
|
@@ -691,6 +691,8 @@ EXPORT_SYMBOL_GPL(usb_alloc_dev);
|
|
*/
|
|
struct usb_device *usb_get_dev(struct usb_device *dev)
|
|
{
|
|
+ barrier();
|
|
+
|
|
if (dev)
|
|
get_device(&dev->dev);
|
|
return dev;
|
|
--
|
|
2.21.1
|
|
|