issue with devcoredump.patch

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



With 4.10-rc1 the devcoredump.patch in patches/backport-adjustment no
longer applies due to following commit:

commit f76d25275c314defb684fdd692239507001774bc
Author: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
Date:   Mon Nov 28 16:41:58 2016 +0100

    driver core: devcoredump: convert to use class_groups

    Convert devcoredump to use class_groups instead of class_attrs as that's
    the correct way to handle lists of class attribute files.

    Acked-by: Johannes Berg <johannes@xxxxxxxxxxxxxxxx>
    Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>

So I am reworking the patch file (attached). When I run gentree I get
following:

Traceback (most recent call last):
  File "./gentree.py", line 1091, in <module>
    ret = _main()
  File "./gentree.py", line 724, in _main
    logwrite=logwrite)
  File "./gentree.py", line 906, in process
    apply_patches(args, "backport", source_dir, 'patches',
bpid.target_dir, logwrite)
  File "./gentree.py", line 514, in apply_patches
    raise Exception('No patch content found in %s' % print_name)
Exception: No patch content found in backport-adjustments/devcoredump.patch

However, go into the target dir and applying patch works fine:

$ patch -p1 < ~-/patches/backport-adjustments/devcoredump.patch
patching file compat/drivers-base-devcoredump.c
Hunk #7 succeeded at 181 with fuzz 1 (offset 2 lines).
Hunk #8 succeeded at 248 (offset 2 lines).
Hunk #9 succeeded at 339 (offset 2 lines).
Hunk #10 succeeded at 386 (offset 2 lines).
patching file include/linux/backport-devcoredump.h

So I am a bit puzzled as to what is going on so currently debugging
lib/patch.py. If anyone has a good hint feel free to let me know.

Regards,
Arend
diff --git a/compat/drivers-base-devcoredump.c b/compat/drivers-base-devcoredump.c
index 240374f..8bb376b 100644
--- a/compat/drivers-base-devcoredump.c
+++ b/compat/drivers-base-devcoredump.c
@@ -31,6 +31,7 @@
 #include <linux/slab.h>
 #include <linux/fs.h>
 #include <linux/workqueue.h>
+#include "backports.h"
 
 static struct class devcd_class;
 
@@ -40,6 +41,10 @@ static bool devcd_disabled;
 /* if data isn't read by userspace after 5 minutes then delete it */
 #define DEVCD_TIMEOUT	(HZ * 60 * 5)
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,11,0)
+static struct bin_attribute devcd_attr_data;
+#endif
+
 struct devcd_entry {
 	struct device devcd_dev;
 	void *data;
@@ -69,8 +74,7 @@ static void devcd_dev_release(struct device *dev)
 	 * a struct device to know when it goes away?
 	 */
 	if (devcd->failing_dev->kobj.sd)
-		sysfs_delete_link(&devcd->failing_dev->kobj, &dev->kobj,
-				  "devcoredump");
+		sysfs_remove_link(&devcd->failing_dev->kobj, "devcoredump");
 
 	put_device(devcd->failing_dev);
 	kfree(devcd);
@@ -82,6 +86,9 @@ static void devcd_del(struct work_struct *wk)
 
 	devcd = container_of(wk, struct devcd_entry, del_wk.work);
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,11,0)
+	device_remove_bin_file(&devcd->devcd_dev, &devcd_attr_data);
+#endif
 	device_del(&devcd->devcd_dev);
 	put_device(&devcd->devcd_dev);
 }
@@ -115,6 +122,7 @@ static struct bin_attribute devcd_attr_data = {
 	.write = devcd_data_write,
 };
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0)
 static struct bin_attribute *devcd_dev_bin_attrs[] = {
 	&devcd_attr_data, NULL,
 };
@@ -126,6 +134,7 @@ static const struct attribute_group devcd_dev_group = {
 static const struct attribute_group *devcd_dev_groups[] = {
 	&devcd_dev_group, NULL,
 };
+#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0) */
 
 static int devcd_free(struct device *dev, void *data)
 {
@@ -170,7 +179,13 @@ static struct class devcd_class = {
 	.name		= "devcoredump",
 	.owner		= THIS_MODULE,
 	.dev_release	= devcd_dev_release,
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0)
 	.dev_groups	= devcd_dev_groups,
+#endif
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,10,0)
+ 	.class_attrs	= devcd_class_attrs,
+#else
	.class_groups	= devcd_class_groups,
+#endif
 };
 
@@ -231,6 +242,14 @@ static void devcd_free_sgtable(void *data)
 	_devcd_free_sgtable(data);
 }
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,11,0)
+size_t sg_pcopy_to_buffer(struct scatterlist *sgl, unsigned int nents,
+			  void *buf, size_t buflen, off_t skip)
+{
+	return 0;
+}
+#endif
+
 /**
  * devcd_read_from_table - copy data from sg_table to a given buffer
  * and return the number of bytes read
@@ -314,6 +333,11 @@ void dev_coredumpm(struct device *dev, struct module *owner,
 	if (device_add(&devcd->devcd_dev))
 		goto put_device;
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,11,0)
+	if (device_create_bin_file(&devcd->devcd_dev, &devcd_attr_data))
+		goto put_device;
+#endif
+
 	if (sysfs_create_link(&devcd->devcd_dev.kobj, &dev->kobj,
 			      "failing_device"))
 		/* nothing - symlink will be missing */;
@@ -356,15 +380,13 @@ void dev_coredumpsg(struct device *dev, struct scatterlist *table,
 }
 EXPORT_SYMBOL_GPL(dev_coredumpsg);
 
-static int __init devcoredump_init(void)
+int __init devcoredump_init(void)
 {
 	return class_register(&devcd_class);
 }
-__initcall(devcoredump_init);
 
-static void __exit devcoredump_exit(void)
+void __exit devcoredump_exit(void)
 {
 	class_for_each_device(&devcd_class, NULL, NULL, devcd_free);
 	class_unregister(&devcd_class);
 }
-__exitcall(devcoredump_exit);
--- a/include/linux/backport-devcoredump.h
+++ b/include/linux/backport-devcoredump.h
@@ -66,7 +66,7 @@ static inline void _devcd_free_sgtable(struct scatterlist *table)
 }
 
 
-#ifdef CONFIG_DEV_COREDUMP
+#ifdef CPTCFG_BPAUTO_WANT_DEV_COREDUMP
 void dev_coredumpv(struct device *dev, void *data, size_t datalen,
 		   gfp_t gfp);
 
@@ -100,6 +100,6 @@ static inline void dev_coredumpsg(struct device *dev, struct scatterlist *table,
 {
 	_devcd_free_sgtable(table);
 }
-#endif /* CONFIG_DEV_COREDUMP */
+#endif /* CPTCFG_BPAUTO_WANT_DEV_COREDUMP */
 
 #endif /* __DEVCOREDUMP_H */

[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux