From patchwork Tue Jan 10 11:16:17 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arend van Spriel X-Patchwork-Id: 9506951 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id A73E0606E1 for ; Tue, 10 Jan 2017 11:16:28 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9A4FC284D0 for ; Tue, 10 Jan 2017 11:16:28 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 8F0AF284EE; Tue, 10 Jan 2017 11:16:28 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.3 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,RCVD_IN_SORBS_SPAM,T_DKIM_INVALID,T_TVD_MIME_EPI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id AB630284D0 for ; Tue, 10 Jan 2017 11:16:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756790AbdAJLQ0 (ORCPT ); Tue, 10 Jan 2017 06:16:26 -0500 Received: from mail-qk0-f181.google.com ([209.85.220.181]:34252 "EHLO mail-qk0-f181.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756752AbdAJLQZ (ORCPT ); Tue, 10 Jan 2017 06:16:25 -0500 Received: by mail-qk0-f181.google.com with SMTP id a20so171347672qkc.1 for ; Tue, 10 Jan 2017 03:16:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=to:from:subject:message-id:date:user-agent:mime-version; bh=6DNG2wWWCtzpxXXlgohgDh5NEkMMokbXo+j4oXOxgeU=; b=MI/RePo11q5b1omDXUrviN9HRbGaJVrlQ5cekxYLDNdwLsUpkN6JqC3k4c8lY0cv4L /2RLUO07lcjvt4Zu3AjjH5H3BSHuKCJhuoha0/GTPnMINpWRVq4xcGDGfKw1K5sOGxco 9HunpTbbI3e32Q+ho0KrNS2RE5ysQqGXVUjLw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:from:subject:message-id:date:user-agent :mime-version; bh=6DNG2wWWCtzpxXXlgohgDh5NEkMMokbXo+j4oXOxgeU=; b=JwDhgVYDoyEwV31jBj7l5VOc8hu4rTyVzaBSFZqvuEOw7w4NIjIx36Z7pnyCBRkt11 yy8h/7nbTrwl1Qs43Jg5CMnK6GiddZvVJsgcZgcS1OHjHXtMgxSQIwc1yG+g+PO3iZ7D V2gy0wr12X5BO03rQwRVJqiBlVy47b77qiBOHdRyMkOw3KnpmABrNmVNsnLQclCHmXO6 OoidewoSN+0C1Gpv1OmkHQUaOm4mfHVrjs/1+mHsNsaVnRD5D+gfP2BLNHOvG1/LWT9m Fdg41LO43d7hgnzGIxso6z+EC8PvGIs8BahsknYYv2Qw0vHUD+2MwuRSmr5o1LErfWQ1 ioYA== X-Gm-Message-State: AIkVDXLuw+SojueryopgS9E5hf92diiPU7hPZnh0AxWdm2rl//hYjX5ELZjxwo0CtP9yBvP0 X-Received: by 10.55.130.133 with SMTP id e127mr2181703qkd.258.1484046979241; Tue, 10 Jan 2017 03:16:19 -0800 (PST) Received: from [10.177.251.201] ([80.82.130.242]) by smtp.gmail.com with ESMTPSA id j9sm1140420qtc.23.2017.01.10.03.16.18 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 10 Jan 2017 03:16:18 -0800 (PST) To: "backports@vger.kernel.org" From: Arend Van Spriel Subject: issue with devcoredump.patch Message-ID: <118eb454-703f-9de9-6fc4-5326de6592ca@broadcom.com> Date: Tue, 10 Jan 2017 12:16:17 +0100 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 Sender: backports-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: backports@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP With 4.10-rc1 the devcoredump.patch in patches/backport-adjustment no longer applies due to following commit: commit f76d25275c314defb684fdd692239507001774bc Author: Greg Kroah-Hartman 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 Signed-off-by: Greg Kroah-Hartman 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 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 #include #include +#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 */