2009-12-01 09:02:54

by Rakib Mullick

[permalink] [raw]
Subject: [PATCH] ip2: Remove #ifdef MODULE from ip2main.c

ip2: Remove #ifdef MODULE completely.

>From kernel command line we can pass "module parameters".
So #ifdef MODULE is obsolute now. Remove it completely.
When CONFIG_PCI=n and building ip2main.c then we are hit
by the following warning. So move *pdev into #ifdef CONFIG_PCI.

drivers/char/ip2/ip2main.c: In function `ip2_loadmain':
drivers/char/ip2/ip2main.c:542: warning: unused variable `pdev'

Signed-off-by: Rakib Mullick <[email protected]>
---

--- linus/drivers/char/ip2/ip2main.c 2009-12-01 12:41:53.000000000 +0600
+++ rakib/drivers/char/ip2/ip2main.c 2009-12-01 12:56:56.000000000 +0600
@@ -263,7 +263,7 @@ static int tracewrap;
/* Macros */
/**********/

-#if defined(MODULE) && defined(IP2DEBUG_OPEN)
+#ifdef IP2DEBUG_OPEN
#define DBG_CNT(s) printk(KERN_DEBUG "(%s): [%x] ttyc=%d, modc=%x -> %s\n", \
tty->name,(pCh->flags), \
tty->count,/*GET_USE_COUNT(module)*/0,s)
@@ -487,7 +487,6 @@ static const struct firmware *ip2_reques
return fw;
}

-#ifndef MODULE
/******************************************************************************
* ip2_setup:
* str: kernel command line string
@@ -531,7 +530,6 @@ static int __init ip2_setup(char *str)
return 1;
}
__setup("ip2=", ip2_setup);
-#endif /* !MODULE */

static int __init ip2_loadmain(void)
{
@@ -539,7 +537,6 @@ static int __init ip2_loadmain(void)
int err = 0;
i2eBordStrPtr pB = NULL;
int rc = -1;
- struct pci_dev *pdev = NULL;
const struct firmware *fw = NULL;

if (poll_only) {
@@ -612,6 +609,7 @@ static int __init ip2_loadmain(void)
case PCI:
#ifdef CONFIG_PCI
{
+ struct pci_dev *pdev = NULL;
u32 addr;
int status;


2009-12-01 15:18:18

by Michael H. Warfield

[permalink] [raw]
Subject: Re: [PATCH] ip2: Remove #ifdef MODULE from ip2main.c

[Crud... NOW I find out that I've been dumped from all the Vger mailing
lists... Again... Sigh...]

Looks good to me.

Regards,
Mike

Signed-off-by: Michael H. Warfield <[email protected]>

On Tue, 2009-12-01 at 15:02 +0600, Rakib Mullick wrote:
> ip2: Remove #ifdef MODULE completely.
>
> From kernel command line we can pass "module parameters".
> So #ifdef MODULE is obsolute now. Remove it completely.
> When CONFIG_PCI=n and building ip2main.c then we are hit
> by the following warning. So move *pdev into #ifdef CONFIG_PCI.
>
> drivers/char/ip2/ip2main.c: In function `ip2_loadmain':
> drivers/char/ip2/ip2main.c:542: warning: unused variable `pdev'
>
> Signed-off-by: Rakib Mullick <[email protected]>
> ---
>
> --- linus/drivers/char/ip2/ip2main.c 2009-12-01 12:41:53.000000000 +0600
> +++ rakib/drivers/char/ip2/ip2main.c 2009-12-01 12:56:56.000000000 +0600
> @@ -263,7 +263,7 @@ static int tracewrap;
> /* Macros */
> /**********/
>
> -#if defined(MODULE) && defined(IP2DEBUG_OPEN)
> +#ifdef IP2DEBUG_OPEN
> #define DBG_CNT(s) printk(KERN_DEBUG "(%s): [%x] ttyc=%d, modc=%x -> %s\n", \
> tty->name,(pCh->flags), \
> tty->count,/*GET_USE_COUNT(module)*/0,s)
> @@ -487,7 +487,6 @@ static const struct firmware *ip2_reques
> return fw;
> }
>
> -#ifndef MODULE
> /******************************************************************************
> * ip2_setup:
> * str: kernel command line string
> @@ -531,7 +530,6 @@ static int __init ip2_setup(char *str)
> return 1;
> }
> __setup("ip2=", ip2_setup);
> -#endif /* !MODULE */
>
> static int __init ip2_loadmain(void)
> {
> @@ -539,7 +537,6 @@ static int __init ip2_loadmain(void)
> int err = 0;
> i2eBordStrPtr pB = NULL;
> int rc = -1;
> - struct pci_dev *pdev = NULL;
> const struct firmware *fw = NULL;
>
> if (poll_only) {
> @@ -612,6 +609,7 @@ static int __init ip2_loadmain(void)
> case PCI:
> #ifdef CONFIG_PCI
> {
> + struct pci_dev *pdev = NULL;
> u32 addr;
> int status;

--
Michael H. Warfield (AI4NB) | (770) 985-6132 | [email protected]
/\/\|=mhw=|\/\/ | (678) 463-0932 | http://www.wittsend.com/mhw/
NIC whois: MHW9 | An optimist believes we live in the best of all
PGP Key: 0x674627FF | possible worlds. A pessimist is sure of it!


Attachments:
signature.asc (482.00 B)
This is a digitally signed message part

2009-12-04 04:14:58

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH] ip2: Remove #ifdef MODULE from ip2main.c

On Tue, 1 Dec 2009 15:02:56 +0600 Rakib Mullick <[email protected]> wrote:

> >From kernel command line we can pass "module parameters".
> So #ifdef MODULE is obsolute now. Remove it completely.
> When CONFIG_PCI=n and building ip2main.c then we are hit
> by the following warning. So move *pdev into #ifdef CONFIG_PCI.
>
> drivers/char/ip2/ip2main.c: In function `ip2_loadmain':
> drivers/char/ip2/ip2main.c:542: warning: unused variable `pdev'

x86_64 allmodconfig:

drivers/char/ip2/ip2main.c: In function 'ip2_loadmain':
drivers/char/ip2/ip2main.c:657: error: 'pdev' undeclared (first use in this function)
drivers/char/ip2/ip2main.c:657: error: (Each undeclared identifier is reported only once
drivers/char/ip2/ip2main.c:657: error: for each function it appears in.)


I suppose this:

--- a/drivers/char/ip2/ip2main.c~ip2-remove-ifdef-module-from-ip2mainc-fix
+++ a/drivers/char/ip2/ip2main.c
@@ -636,6 +636,7 @@ static int __init ip2_loadmain(void)
dev_err(&pdev->dev, "I/O address error\n");

ip2config.irq[i] = pdev->irq;
+ pci_dev_put(pdev);
}
#else
printk(KERN_ERR "IP2: PCI card specified but PCI "
@@ -654,7 +655,6 @@ static int __init ip2_loadmain(void)
break;
} /* switch */
} /* for */
- pci_dev_put(pdev);

for (i = 0; i < IP2_MAX_BOARDS; ++i) {
if (ip2config.addr[i]) {
_

but it needs checking - does pci_get_device() need a balancing pci_dev_put()?

2009-12-04 09:37:51

by Rakib Mullick

[permalink] [raw]
Subject: Re: [PATCH] ip2: Remove #ifdef MODULE from ip2main.c

On 12/4/09, Andrew Morton <[email protected]> wrote:
> On Tue, 1 Dec 2009 15:02:56 +0600 Rakib Mullick <[email protected]> wrote:
>
> x86_64 allmodconfig:
>
> drivers/char/ip2/ip2main.c: In function 'ip2_loadmain':
>
> drivers/char/ip2/ip2main.c:657: error: 'pdev' undeclared (first use in this function)
> drivers/char/ip2/ip2main.c:657: error: (Each undeclared identifier is reported only once
> drivers/char/ip2/ip2main.c:657: error: for each function it appears in.)
>
Yes, I've also notice that pci_dev_put was outside of the #ifdef CONFIG_PCI
context. I was about to make patch for this.
>
> I suppose this:
>
> but it needs checking - does pci_get_device() need a balancing pci_dev_put()?

I thinks - yes. Otherwise we've to face ref counting problem.
And when pci_enable_device fails we need to make sure that we're
calling pci_dev_put.

So.. please checkout the following patch. Following patch has
been made without applying 'ip2-remove-ifdef-module-from-ip2mainc-fix' patch.
Please just check is it okay or not.

---
--- linus/drivers/char/ip2/ip2main.c 2009-12-01 12:41:53.000000000 +0600
+++ rakib/drivers/char/ip2/ip2main.c 2009-12-04 16:32:22.000000000 +0600
@@ -626,7 +626,7 @@ static int __init ip2_loadmain(void)

if (pci_enable_device(pdev)) {
dev_err(&pdev->dev, "can't enable device\n");
- break;
+ goto out;
}
ip2config.type[i] = PCI;
ip2config.pci_dev[i] = pci_dev_get(pdev);
@@ -638,6 +638,8 @@ static int __init ip2_loadmain(void)
dev_err(&pdev->dev, "I/O address error\n");

ip2config.irq[i] = pdev->irq;
+out:
+ pci_dev_put(pdev);
}
#else
printk(KERN_ERR "IP2: PCI card specified but PCI "
@@ -656,7 +658,6 @@ static int __init ip2_loadmain(void)
break;
} /* switch */
} /* for */
- pci_dev_put(pdev);

for (i = 0; i < IP2_MAX_BOARDS; ++i) {
if (ip2config.addr[i]) {