123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- --- a/compat/Makefile
- +++ b/compat/Makefile
- @@ -35,8 +35,6 @@ compat-$(CPTCFG_KERNEL_4_6) += backport-
-
- compat-$(CPTCFG_BPAUTO_BUILD_CRYPTO_CCM) += crypto-ccm.o
- compat-$(CPTCFG_BPAUTO_CRYPTO_SKCIPHER) += crypto-skcipher.o
- -skcipher-objs += crypto-skcipher.o
- -obj-$(CPTCFG_BPAUTO_CRYPTO_SKCIPHER) += skcipher.o
- compat-$(CPTCFG_BPAUTO_BUILD_WANT_DEV_COREDUMP) += drivers-base-devcoredump.o
- compat-$(CPTCFG_BPAUTO_RHASHTABLE) += lib-rhashtable.o
- cordic-objs += lib-cordic.o
- --- 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 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
-
- 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_d
- .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 devc
- 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)
- {
- @@ -160,18 +169,11 @@ static ssize_t disabled_store(struct cla
-
- return count;
- }
- -static CLASS_ATTR_RW(disabled);
-
- -static struct attribute *devcd_class_attrs[] = {
- - &class_attr_disabled.attr,
- - NULL,
- +static struct class_attribute devcd_class_attrs[] = {
- + __ATTR_RW(disabled),
- + __ATTR_NULL
- };
- -#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0)
- -ATTRIBUTE_GROUPS(devcd_class);
- -#else
- -#define BP_ATTR_GRP_STRUCT device_attribute
- -ATTRIBUTE_GROUPS_BACKPORT(devcd_class);
- -#endif
-
- static struct class devcd_class = {
- .name = "devcoredump",
- @@ -179,10 +181,8 @@ static struct class devcd_class = {
- .dev_release = devcd_dev_release,
- #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0)
- .dev_groups = devcd_dev_groups,
- -#else
- - .dev_attrs = devcd_class_dev_attrs,
- #endif
- - .class_groups = devcd_class_groups,
- + .class_attrs = devcd_class_attrs,
- };
-
- static ssize_t devcd_readv(char *buffer, loff_t offset, size_t count,
- @@ -325,6 +325,11 @@ void dev_coredumpm(struct device *dev, s
- 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 */;
- @@ -367,16 +372,13 @@ void dev_coredumpsg(struct device *dev,
- }
- EXPORT_SYMBOL_GPL(dev_coredumpsg);
-
- -static int __init devcoredump_init(void)
- +int __init devcoredump_init(void)
- {
- - init_devcd_class_attrs();
- 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(s
- }
-
-
- -#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
- {
- _devcd_free_sgtable(table);
- }
- -#endif /* CONFIG_DEV_COREDUMP */
- +#endif /* CPTCFG_BPAUTO_WANT_DEV_COREDUMP */
-
- #endif /* __DEVCOREDUMP_H */
|