2013-10-13 18:07:32

by Wim Van Sebroeck

[permalink] [raw]
Subject: [GIT PULL REQUEST] watchdog - v3.12-rc4 Fixes

Hi Linus,

Please pull from 'master' branch of
git://http://www.linux-watchdog.org/linux-watchdog.git

This will fix a deadlock on the ts72xx_wdt driver,
fix bitmasks in the kempld_wdt driver and
fix a section mismatch in the sunxi_wdt driver.

This will update the following files:

kempld_wdt.c | 2 +-
sunxi_wdt.c | 4 ++--
ts72xx_wdt.c | 3 ++-
3 files changed, 5 insertions(+), 4 deletions(-)

with these Changes:

commit 1d5898b4f8a0f6e231546d30dd54f6f9b89c232c
Author: Maxime Ripard <[email protected]>
Date: Sat Oct 5 16:20:17 2013 +0200

watchdog: sunxi: Fix section mismatch

This driver has a section mismatch, for probe and remove functions,
leading to the following warning during the compilation.

WARNING: drivers/watchdog/built-in.o(.data+0x24): Section mismatch in
reference from the variable sunxi_wdt_driver to the function
.init.text:sunxi_wdt_probe()
The variable sunxi_wdt_driver references
the function __init sunxi_wdt_probe()

Signed-off-by: Maxime Ripard <[email protected]>
Reviewed-by: Guenter Roeck <[email protected]>
Signed-off-by: Wim Van Sebroeck <[email protected]>

commit 4c4e45669de475573b15d968a6dca8d00124c9ad
Author: Jingoo Han <[email protected]>
Date: Mon Sep 23 19:16:57 2013 +0900

watchdog: kempld_wdt: Fix bit mask definition

STAGE_CFG bits are defined as [5:4] bits. However, '(((x) & 0x30) << 4)'
handles [9:8] bits. Thus, it should be fixed in order to handle
[5:4] bits.

Signed-off-by: Jingoo Han <[email protected]>
Reviewed-by: Guenter Roeck <[email protected]>
Signed-off-by: Wim Van Sebroeck <[email protected]>

commit 8612ed0d97abcf1c016d34755b7cf2060de71963
Author: Dan Carpenter <[email protected]>
Date: Fri Aug 23 11:40:59 2013 +0300

watchdog: ts72xx_wdt: locking bug in ioctl

Calling the WDIOC_GETSTATUS & WDIOC_GETBOOTSTATUS and twice will cause a
interruptible deadlock.

Signed-off-by: Dan Carpenter <[email protected]>
Reviewed-by: Guenter Roeck <[email protected]>
Signed-off-by: Wim Van Sebroeck <[email protected]>

For completeness, I added the overal diff below.

Greetings,
Wim.

================================================================================
diff --git a/drivers/watchdog/hpwdt.c b/drivers/watchdog/hpwdt.c
index 1eff743..ae60406 100644
--- a/drivers/watchdog/hpwdt.c
+++ b/drivers/watchdog/hpwdt.c
@@ -814,6 +814,9 @@ static int __devinit hpwdt_init_one(struct pci_dev *dev,
hpwdt_timer_reg = pci_mem_addr + 0x70;
hpwdt_timer_con = pci_mem_addr + 0x72;

+ /* Make sure that timer is disabled until /dev/watchdog is opened */
+ hpwdt_stop();
+
/* Make sure that we have a valid soft_margin */
if (hpwdt_change_timer(soft_margin))
hpwdt_change_timer(DEFAULT_MARGIN);
diff --git a/drivers/watchdog/watchdog_core.c b/drivers/watchdog/watchdog_core.c
index 6aa46a9..3796434 100644
--- a/drivers/watchdog/watchdog_core.c
+++ b/drivers/watchdog/watchdog_core.c
@@ -128,11 +128,12 @@ EXPORT_SYMBOL_GPL(watchdog_register_device);
void watchdog_unregister_device(struct watchdog_device *wdd)
{
int ret;
- int devno = wdd->cdev.dev;
+ int devno;

if (wdd == NULL)
return;

+ devno = wdd->cdev.dev;
ret = watchdog_dev_unregister(wdd);
if (ret)
pr_err("error unregistering /dev/watchdog (err=%d)\n", ret);


2013-10-13 18:14:48

by Guenter Roeck

[permalink] [raw]
Subject: Re: [GIT PULL REQUEST] watchdog - v3.12-rc4 Fixes

On 10/13/2013 11:07 AM, Wim Van Sebroeck wrote:
> Hi Linus,
>
> Please pull from 'master' branch of
> git://http://www.linux-watchdog.org/linux-watchdog.git
>
> This will fix a deadlock on the ts72xx_wdt driver,
> fix bitmasks in the kempld_wdt driver and
> fix a section mismatch in the sunxi_wdt driver.
>
> This will update the following files:
>
> kempld_wdt.c | 2 +-
> sunxi_wdt.c | 4 ++--
> ts72xx_wdt.c | 3 ++-
> 3 files changed, 5 insertions(+), 4 deletions(-)
>
> with these Changes:
>
> commit 1d5898b4f8a0f6e231546d30dd54f6f9b89c232c
> Author: Maxime Ripard <[email protected]>
> Date: Sat Oct 5 16:20:17 2013 +0200
>
> watchdog: sunxi: Fix section mismatch
>
> This driver has a section mismatch, for probe and remove functions,
> leading to the following warning during the compilation.
>
> WARNING: drivers/watchdog/built-in.o(.data+0x24): Section mismatch in
> reference from the variable sunxi_wdt_driver to the function
> .init.text:sunxi_wdt_probe()
> The variable sunxi_wdt_driver references
> the function __init sunxi_wdt_probe()
>
> Signed-off-by: Maxime Ripard <[email protected]>
> Reviewed-by: Guenter Roeck <[email protected]>
> Signed-off-by: Wim Van Sebroeck <[email protected]>
>
> commit 4c4e45669de475573b15d968a6dca8d00124c9ad
> Author: Jingoo Han <[email protected]>
> Date: Mon Sep 23 19:16:57 2013 +0900
>
> watchdog: kempld_wdt: Fix bit mask definition
>
> STAGE_CFG bits are defined as [5:4] bits. However, '(((x) & 0x30) << 4)'
> handles [9:8] bits. Thus, it should be fixed in order to handle
> [5:4] bits.
>
> Signed-off-by: Jingoo Han <[email protected]>
> Reviewed-by: Guenter Roeck <[email protected]>
> Signed-off-by: Wim Van Sebroeck <[email protected]>
>
> commit 8612ed0d97abcf1c016d34755b7cf2060de71963
> Author: Dan Carpenter <[email protected]>
> Date: Fri Aug 23 11:40:59 2013 +0300
>
> watchdog: ts72xx_wdt: locking bug in ioctl
>
> Calling the WDIOC_GETSTATUS & WDIOC_GETBOOTSTATUS and twice will cause a
> interruptible deadlock.
>
> Signed-off-by: Dan Carpenter <[email protected]>
> Reviewed-by: Guenter Roeck <[email protected]>
> Signed-off-by: Wim Van Sebroeck <[email protected]>
>
> For completeness, I added the overal diff below.
>
Hi Wim,

thanks a lot for picking up those patches.

Looks like the diffs don't match the description.
Are those possibly the diffs from your previous pull request ?

Guenter

> Greetings,
> Wim.
>
> ================================================================================
> diff --git a/drivers/watchdog/hpwdt.c b/drivers/watchdog/hpwdt.c
> index 1eff743..ae60406 100644
> --- a/drivers/watchdog/hpwdt.c
> +++ b/drivers/watchdog/hpwdt.c
> @@ -814,6 +814,9 @@ static int __devinit hpwdt_init_one(struct pci_dev *dev,
> hpwdt_timer_reg = pci_mem_addr + 0x70;
> hpwdt_timer_con = pci_mem_addr + 0x72;
>
> + /* Make sure that timer is disabled until /dev/watchdog is opened */
> + hpwdt_stop();
> +
> /* Make sure that we have a valid soft_margin */
> if (hpwdt_change_timer(soft_margin))
> hpwdt_change_timer(DEFAULT_MARGIN);
> diff --git a/drivers/watchdog/watchdog_core.c b/drivers/watchdog/watchdog_core.c
> index 6aa46a9..3796434 100644
> --- a/drivers/watchdog/watchdog_core.c
> +++ b/drivers/watchdog/watchdog_core.c
> @@ -128,11 +128,12 @@ EXPORT_SYMBOL_GPL(watchdog_register_device);
> void watchdog_unregister_device(struct watchdog_device *wdd)
> {
> int ret;
> - int devno = wdd->cdev.dev;
> + int devno;
>
> if (wdd == NULL)
> return;
>
> + devno = wdd->cdev.dev;
> ret = watchdog_dev_unregister(wdd);
> if (ret)
> pr_err("error unregistering /dev/watchdog (err=%d)\n", ret);
> --
> To unsubscribe from this list: send the line "unsubscribe linux-watchdog" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
>

2013-10-13 18:19:38

by Wim Van Sebroeck

[permalink] [raw]
Subject: Re: [GIT PULL REQUEST] watchdog - v3.12-rc4 Fixes

Hi Guenter,

> Looks like the diffs don't match the description.
> Are those possibly the diffs from your previous pull request ?

>From a 3.6 pull request to be precisely :-( I use the old mail
as template and apparently forgot to change the diff...
The correct diff here below.

Thanks,
Wim.

================================================================================
diff --git a/drivers/watchdog/kempld_wdt.c b/drivers/watchdog/kempld_wdt.c
index 491419e..5c3d4df 100644
--- a/drivers/watchdog/kempld_wdt.c
+++ b/drivers/watchdog/kempld_wdt.c
@@ -35,7 +35,7 @@
#define KEMPLD_WDT_STAGE_TIMEOUT(x) (0x1b + (x) * 4)
#define KEMPLD_WDT_STAGE_CFG(x) (0x18 + (x))
#define STAGE_CFG_GET_PRESCALER(x) (((x) & 0x30) >> 4)
-#define STAGE_CFG_SET_PRESCALER(x) (((x) & 0x30) << 4)
+#define STAGE_CFG_SET_PRESCALER(x) (((x) & 0x3) << 4)
#define STAGE_CFG_PRESCALER_MASK 0x30
#define STAGE_CFG_ACTION_MASK 0x7
#define STAGE_CFG_ASSERT (1 << 3)
diff --git a/drivers/watchdog/sunxi_wdt.c b/drivers/watchdog/sunxi_wdt.c
index 1f94b42..f6caa77 100644
--- a/drivers/watchdog/sunxi_wdt.c
+++ b/drivers/watchdog/sunxi_wdt.c
@@ -146,7 +146,7 @@ static const struct watchdog_ops sunxi_wdt_ops = {
.set_timeout = sunxi_wdt_set_timeout,
};

-static int __init sunxi_wdt_probe(struct platform_device *pdev)
+static int sunxi_wdt_probe(struct platform_device *pdev)
{
struct sunxi_wdt_dev *sunxi_wdt;
struct resource *res;
@@ -187,7 +187,7 @@ static int __init sunxi_wdt_probe(struct platform_device *pdev)
return 0;
}

-static int __exit sunxi_wdt_remove(struct platform_device *pdev)
+static int sunxi_wdt_remove(struct platform_device *pdev)
{
struct sunxi_wdt_dev *sunxi_wdt = platform_get_drvdata(pdev);

diff --git a/drivers/watchdog/ts72xx_wdt.c b/drivers/watchdog/ts72xx_wdt.c
index 42913f1..c9b0c62 100644
--- a/drivers/watchdog/ts72xx_wdt.c
+++ b/drivers/watchdog/ts72xx_wdt.c
@@ -310,7 +310,8 @@ static long ts72xx_wdt_ioctl(struct file *file, unsigned int cmd,

case WDIOC_GETSTATUS:
case WDIOC_GETBOOTSTATUS:
- return put_user(0, p);
+ error = put_user(0, p);
+ break;

case WDIOC_KEEPALIVE:
ts72xx_wdt_kick(wdt);

2013-10-13 18:29:16

by Guenter Roeck

[permalink] [raw]
Subject: Re: [GIT PULL REQUEST] watchdog - v3.12-rc4 Fixes

On 10/13/2013 11:19 AM, Wim Van Sebroeck wrote:
> Hi Guenter,
>
>> Looks like the diffs don't match the description.
>> Are those possibly the diffs from your previous pull request ?
>
>>From a 3.6 pull request to be precisely :-( I use the old mail
> as template and apparently forgot to change the diff...
> The correct diff here below.
>

I use a template and script to generate my pull request e-mails to avoid
this kind of problem. This way worst that can happen is an unexpected
"rcX" in the headline ... unless the pull request itself is screwed up,
which I should hopefully notice before I send it out.

Guenter