rpms/kernel/devel git-gregkh.patch, 1.3, 1.4 kernel-2.6.spec, 1.2544, 1.2545 linux-2.6-compile-fixes.patch, 1.99, 1.100 linux-2.6-lockdep-fixes.patch, 1.17, 1.18

fedora-cvs-commits at redhat.com fedora-cvs-commits at redhat.com
Thu Aug 10 19:12:13 UTC 2006


Author: davej

Update of /cvs/dist/rpms/kernel/devel
In directory cvs.devel.redhat.com:/tmp/cvs-serv2426

Modified Files:
	git-gregkh.patch kernel-2.6.spec linux-2.6-compile-fixes.patch 
	linux-2.6-lockdep-fixes.patch 
Log Message:
update from gregs bits

git-gregkh.patch:
 b/Makefile                                    |   23 +
 b/drivers/ide/pci/generic.c                   |   30 +
 b/drivers/media/dvb/bt8xx/dst.c               |   58 +--
 b/drivers/media/dvb/dvb-core/Makefile         |    6 
 b/drivers/media/radio/Kconfig                 |   12 
 b/drivers/media/radio/Makefile                |    1 
 b/drivers/media/radio/dsbr100.c               |  430 ++++++++++++++++++++++++++
 b/drivers/media/video/Kconfig                 |   12 
 b/drivers/media/video/Makefile                |    2 
 b/drivers/media/video/compat_ioctl32.c        |   32 +
 b/drivers/media/video/cx25840/cx25840-core.c  |    4 
 b/drivers/media/video/cx88/cx88-video.c       |    4 
 b/drivers/media/video/msp3400-kthreads.c      |    4 
 b/drivers/media/video/pwc/Kconfig             |    2 
 b/drivers/media/video/pwc/pwc-if.c            |    1 
 b/drivers/media/video/saa7134/saa7134-video.c |    2 
 b/drivers/media/video/tuner-types.c           |   14 
 b/drivers/media/video/v4l1-compat.c           |    4 
 b/drivers/media/video/v4l2-common.c           |    6 
 b/drivers/media/video/videodev.c              |    2 
 b/drivers/media/video/vivi.c                  |    4 
 b/drivers/net/myri10ge/myri10ge.c             |    2 
 b/drivers/net/tg3.c                           |   51 +--
 b/drivers/net/tg3.h                           |    8 
 b/drivers/s390/char/tape_class.c              |    2 
 b/drivers/s390/cio/device_fsm.c               |    1 
 b/drivers/s390/cio/device_ops.c               |    3 
 b/drivers/scsi/ata_piix.c                     |    5 
 b/drivers/scsi/libata-core.c                  |   34 --
 b/drivers/scsi/libata-scsi.c                  |   13 
 b/drivers/scsi/sata_sil24.c                   |    1 
 b/fs/jfs/inode.c                              |   16 
 b/fs/jfs/jfs_inode.h                          |    1 
 b/fs/jfs/super.c                              |  118 ++++++-
 b/fs/xfs/xfs_alloc.c                          |  103 +++---
 b/include/linux/skbuff.h                      |    4 
 b/include/media/v4l2-dev.h                    |    2 
 b/net/core/dst.c                              |    3 
 b/net/core/pktgen.c                           |    4 
 b/net/core/rtnetlink.c                        |   15 
 b/net/core/skbuff.c                           |    4 
 b/net/core/wireless.c                         |   24 +
 b/net/ipv4/route.c                            |    2 
 b/net/ipv4/tcp_output.c                       |   12 
 b/net/ipv6/addrconf.c                         |    4 
 b/net/ipx/af_ipx.c                            |   10 
 b/sound/oss/Kconfig                           |    6 
 b/sound/pci/Kconfig                           |   70 ++--
 b/usr/Makefile                                |    3 
 drivers/media/video/dsbr100.c                 |  430 --------------------------
 50 files changed, 920 insertions(+), 684 deletions(-)

Index: git-gregkh.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/git-gregkh.patch,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- git-gregkh.patch	10 Aug 2006 01:04:06 -0000	1.3
+++ git-gregkh.patch	10 Aug 2006 19:12:08 -0000	1.4
@@ -1,3 +1,55 @@
+commit 99baa75231e35aca41b9718adfb07f45ce40e84c
+Merge: fff6425... 0e1edbd...
+Author: Greg Kroah-Hartman <gregkh at suse.de>
+Date:   Wed Aug 9 23:57:52 2006 -0700
+
+    Merge git://oss.sgi.com:8090/nathans/xfs-rc-2.6
+
+commit 0e1edbd99994270023cea5afe593f972eb09a778
+Author: Nathan Scott <nathans at sgi.com>
+Date:   Thu Aug 10 14:40:41 2006 +1000
+
+    [XFS] Fix xfs_free_extent related NULL pointer dereference.
+    
+    We recently fixed an out-of-space deadlock in XFS, and part of that fix
+    involved the addition of the XFS_ALLOC_FLAG_FREEING flag to some of the
+    space allocator calls to indicate they're freeing space, not allocating
+    it. There was a missed xfs_alloc_fix_freelist condition test that did not
+    correctly test "flags". The same test would also test an uninitialised
+    structure field (args->userdata) and depending on its value either would
+    or would not return early with a critical buffer pointer set to NULL.
+    
+    This fixes that up, adds asserts to several places to catch future botches
+    of this nature, and skips sections of xfs_alloc_fix_freelist that are
+    irrelevent for the space-freeing case.
+    
+    SGI-PV: 955303
+    SGI-Modid: xfs-linux-melb:xfs-kern:26743a
+    
+    Signed-off-by: Nathan Scott <nathans at sgi.com>
+
+commit fff642570dc47ab76491fe81ee6599269c4eb13e
+Author: David S. Miller <davem at sunset.davemloft.net>
+Date:   Wed Aug 9 17:36:15 2006 -0700
+
+    [IPX]: Fix typo, ipxhdr() --> ipx_hdr()
+    
+    Noticed by Dave Jones.
+    
+    Signed-off-by: David S. Miller <davem at davemloft.net>
+
+commit 06aebfb7faa13258af5230ff3d1587ece6c0250e
+Author: Herbert Xu <herbert at gondor.apana.org.au>
+Date:   Wed Aug 9 16:52:04 2006 -0700
+
+    [IPV6]: The ifa lock is a BH lock
+    
+    The ifa lock is expected to be taken in BH context (by addrconf timers)
+    so we must disable BH when accessing it from user context.
+    
+    Signed-off-by: Herbert Xu <herbert at gondor.apana.org.au>
+    Signed-off-by: David S. Miller <davem at davemloft.net>
+
 commit 79860a9a79a17f1bed0713680a3995467405ba49
 Author: Alan Cox <alan at lxorguk.ukuu.org.uk>
 Date:   Wed Aug 9 15:04:58 2006 +0100
@@ -723,6 +775,7 @@
  b/fs/jfs/inode.c                              |   16 
  b/fs/jfs/jfs_inode.h                          |    1 
  b/fs/jfs/super.c                              |  118 ++++++-
+ b/fs/xfs/xfs_alloc.c                          |  103 +++---
  b/include/linux/skbuff.h                      |    4 
  b/include/media/v4l2-dev.h                    |    2 
  b/net/core/dst.c                              |    3 
@@ -732,12 +785,13 @@
  b/net/core/wireless.c                         |   24 +
  b/net/ipv4/route.c                            |    2 
  b/net/ipv4/tcp_output.c                       |   12 
+ b/net/ipv6/addrconf.c                         |    4 
  b/net/ipx/af_ipx.c                            |   10 
  b/sound/oss/Kconfig                           |    6 
  b/sound/pci/Kconfig                           |   70 ++--
  b/usr/Makefile                                |    3 
  drivers/media/video/dsbr100.c                 |  430 --------------------------
- 48 files changed, 864 insertions(+), 634 deletions(-)
+ 50 files changed, 920 insertions(+), 685 deletions(-)
 
 diff --git a/Makefile b/Makefile
 index c2f78a5..c53ed56 100644
@@ -2964,6 +3018,180 @@
  };
  
  static struct export_operations jfs_export_operations = {
+diff --git a/fs/xfs/xfs_alloc.c b/fs/xfs/xfs_alloc.c
+index eef6763..d2bbcd8 100644
+--- a/fs/xfs/xfs_alloc.c
++++ b/fs/xfs/xfs_alloc.c
+@@ -1835,40 +1835,47 @@ xfs_alloc_fix_freelist(
+ 				&agbp)))
+ 			return error;
+ 		if (!pag->pagf_init) {
++			ASSERT(flags & XFS_ALLOC_FLAG_TRYLOCK);
++			ASSERT(!(flags & XFS_ALLOC_FLAG_FREEING));
+ 			args->agbp = NULL;
+ 			return 0;
+ 		}
+ 	} else
+ 		agbp = NULL;
+ 
+-	/* If this is a metadata preferred pag and we are user data
++	/*
++	 * If this is a metadata preferred pag and we are user data
+ 	 * then try somewhere else if we are not being asked to
+ 	 * try harder at this point
+ 	 */
+-	if (pag->pagf_metadata && args->userdata && flags) {
++	if (pag->pagf_metadata && args->userdata &&
++	    (flags & XFS_ALLOC_FLAG_TRYLOCK)) {
++		ASSERT(!(flags & XFS_ALLOC_FLAG_FREEING));
+ 		args->agbp = NULL;
+ 		return 0;
+ 	}
+ 
+-	need = XFS_MIN_FREELIST_PAG(pag, mp);
+-	delta = need > pag->pagf_flcount ? need - pag->pagf_flcount : 0;
+-	/*
+-	 * If it looks like there isn't a long enough extent, or enough
+-	 * total blocks, reject it.
+-	 */
+-	longest = (pag->pagf_longest > delta) ?
+-		(pag->pagf_longest - delta) :
+-		(pag->pagf_flcount > 0 || pag->pagf_longest > 0);
+-	if (args->minlen + args->alignment + args->minalignslop - 1 > longest ||
+-	    (!(flags & XFS_ALLOC_FLAG_FREEING) &&
+-	     (int)(pag->pagf_freeblks + pag->pagf_flcount -
+-		   need - args->total) <
+-	     (int)args->minleft)) {
+-		if (agbp)
+-			xfs_trans_brelse(tp, agbp);
+-		args->agbp = NULL;
+-		return 0;
++	if (!(flags & XFS_ALLOC_FLAG_FREEING)) {
++		need = XFS_MIN_FREELIST_PAG(pag, mp);
++		delta = need > pag->pagf_flcount ? need - pag->pagf_flcount : 0;
++		/*
++		 * If it looks like there isn't a long enough extent, or enough
++		 * total blocks, reject it.
++		 */
++		longest = (pag->pagf_longest > delta) ?
++			(pag->pagf_longest - delta) :
++			(pag->pagf_flcount > 0 || pag->pagf_longest > 0);
++		if ((args->minlen + args->alignment + args->minalignslop - 1) >
++				longest ||
++		    ((int)(pag->pagf_freeblks + pag->pagf_flcount -
++			   need - args->total) < (int)args->minleft)) {
++			if (agbp)
++				xfs_trans_brelse(tp, agbp);
++			args->agbp = NULL;
++			return 0;
++		}
+ 	}
++
+ 	/*
+ 	 * Get the a.g. freespace buffer.
+ 	 * Can fail if we're not blocking on locks, and it's held.
+@@ -1878,6 +1885,8 @@ xfs_alloc_fix_freelist(
+ 				&agbp)))
+ 			return error;
+ 		if (agbp == NULL) {
++			ASSERT(flags & XFS_ALLOC_FLAG_TRYLOCK);
++			ASSERT(!(flags & XFS_ALLOC_FLAG_FREEING));
+ 			args->agbp = NULL;
+ 			return 0;
+ 		}
+@@ -1887,22 +1896,24 @@ xfs_alloc_fix_freelist(
+ 	 */
+ 	agf = XFS_BUF_TO_AGF(agbp);
+ 	need = XFS_MIN_FREELIST(agf, mp);
+-	delta = need > be32_to_cpu(agf->agf_flcount) ?
+-		(need - be32_to_cpu(agf->agf_flcount)) : 0;
+ 	/*
+ 	 * If there isn't enough total or single-extent, reject it.
+ 	 */
+-	longest = be32_to_cpu(agf->agf_longest);
+-	longest = (longest > delta) ? (longest - delta) :
+-		(be32_to_cpu(agf->agf_flcount) > 0 || longest > 0);
+-	if (args->minlen + args->alignment + args->minalignslop - 1 > longest ||
+-	     (!(flags & XFS_ALLOC_FLAG_FREEING) &&
+-		(int)(be32_to_cpu(agf->agf_freeblks) +
+-		   be32_to_cpu(agf->agf_flcount) - need - args->total) <
+-	     (int)args->minleft)) {
+-		xfs_trans_brelse(tp, agbp);
+-		args->agbp = NULL;
+-		return 0;
++	if (!(flags & XFS_ALLOC_FLAG_FREEING)) {
++		delta = need > be32_to_cpu(agf->agf_flcount) ?
++			(need - be32_to_cpu(agf->agf_flcount)) : 0;
++		longest = be32_to_cpu(agf->agf_longest);
++		longest = (longest > delta) ? (longest - delta) :
++			(be32_to_cpu(agf->agf_flcount) > 0 || longest > 0);
++		if ((args->minlen + args->alignment + args->minalignslop - 1) >
++				longest ||
++		    ((int)(be32_to_cpu(agf->agf_freeblks) +
++		     be32_to_cpu(agf->agf_flcount) - need - args->total) <
++				(int)args->minleft)) {
++			xfs_trans_brelse(tp, agbp);
++			args->agbp = NULL;
++			return 0;
++		}
+ 	}
+ 	/*
+ 	 * Make the freelist shorter if it's too long.
+@@ -1950,12 +1961,11 @@ xfs_alloc_fix_freelist(
+ 		 * on a completely full ag.
+ 		 */
+ 		if (targs.agbno == NULLAGBLOCK) {
+-			if (!(flags & XFS_ALLOC_FLAG_FREEING)) {
+-				xfs_trans_brelse(tp, agflbp);
+-				args->agbp = NULL;
+-				return 0;
+-			}
+-			break;
++			if (flags & XFS_ALLOC_FLAG_FREEING)
++				break;
++			xfs_trans_brelse(tp, agflbp);
++			args->agbp = NULL;
++			return 0;
+ 		}
+ 		/*
+ 		 * Put each allocated block on the list.
+@@ -2442,31 +2452,26 @@ xfs_free_extent(
+ 	xfs_fsblock_t	bno,	/* starting block number of extent */
+ 	xfs_extlen_t	len)	/* length of extent */
+ {
+-#ifdef DEBUG
+-	xfs_agf_t	*agf;	/* a.g. freespace header */
+-#endif
+-	xfs_alloc_arg_t	args;	/* allocation argument structure */
++	xfs_alloc_arg_t	args;
+ 	int		error;
+ 
+ 	ASSERT(len != 0);
++	memset(&args, 0, sizeof(xfs_alloc_arg_t));
+ 	args.tp = tp;
+ 	args.mp = tp->t_mountp;
+ 	args.agno = XFS_FSB_TO_AGNO(args.mp, bno);
+ 	ASSERT(args.agno < args.mp->m_sb.sb_agcount);
+ 	args.agbno = XFS_FSB_TO_AGBNO(args.mp, bno);
+-	args.alignment = 1;
+-	args.minlen = args.minleft = args.minalignslop = 0;
+ 	down_read(&args.mp->m_peraglock);
+ 	args.pag = &args.mp->m_perag[args.agno];
+ 	if ((error = xfs_alloc_fix_freelist(&args, XFS_ALLOC_FLAG_FREEING)))
+ 		goto error0;
+ #ifdef DEBUG
+ 	ASSERT(args.agbp != NULL);
+-	agf = XFS_BUF_TO_AGF(args.agbp);
+-	ASSERT(args.agbno + len <= be32_to_cpu(agf->agf_length));
++	ASSERT((args.agbno + len) <=
++		be32_to_cpu(XFS_BUF_TO_AGF(args.agbp)->agf_length));
+ #endif
+-	error = xfs_free_ag_extent(tp, args.agbp, args.agno, args.agbno,
+-		len, 0);
++	error = xfs_free_ag_extent(tp, args.agbp, args.agno, args.agbno, len, 0);
+ error0:
+ 	up_read(&args.mp->m_peraglock);
+ 	return error;
 diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
 index 19c96d4..3573ba9 100644
 --- a/include/linux/skbuff.h
@@ -3190,8 +3418,26 @@
  	TCP_INC_STATS(TCP_MIB_ACTIVEOPENS);
  
  	/* Timer for repeating the SYN until an answer. */
+diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
+index 8ea1e36..0c5042e 100644
+--- a/net/ipv6/addrconf.c
++++ b/net/ipv6/addrconf.c
+@@ -1909,11 +1909,11 @@ static int inet6_addr_add(int ifindex, s
+ 	ifp = ipv6_add_addr(idev, pfx, plen, scope, ifa_flags);
+ 
+ 	if (!IS_ERR(ifp)) {
+-		spin_lock(&ifp->lock);
++		spin_lock_bh(&ifp->lock);
+ 		ifp->valid_lft = valid_lft;
+ 		ifp->prefered_lft = prefered_lft;
+ 		ifp->tstamp = jiffies;
+-		spin_unlock(&ifp->lock);
++		spin_unlock_bh(&ifp->lock);
+ 
+ 		addrconf_dad_start(ifp, 0);
+ 		in6_ifa_put(ifp);
 diff --git a/net/ipx/af_ipx.c b/net/ipx/af_ipx.c
-index aa34ff4..4019642 100644
+index aa34ff4..bef3f61 100644
 --- a/net/ipx/af_ipx.c
 +++ b/net/ipx/af_ipx.c
 @@ -1642,13 +1642,17 @@ static int ipx_rcv(struct sk_buff *skb, 
@@ -3203,7 +3449,7 @@
 +	if (!pskb_may_pull(skb, sizeof(struct ipxhdr)))
 +		goto drop;
 +
-+	ipx_pktsize = ntohs(ipxhdr(skb)->ipx_pktsize);
++	ipx_pktsize = ntohs(ipx_hdr(skb)->ipx_pktsize);
  	
  	/* Too small or invalid header? */
 -	if (ipx_pktsize < sizeof(struct ipxhdr) || ipx_pktsize > skb->len)


Index: kernel-2.6.spec
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/kernel-2.6.spec,v
retrieving revision 1.2544
retrieving revision 1.2545
diff -u -r1.2544 -r1.2545
--- kernel-2.6.spec	10 Aug 2006 17:47:24 -0000	1.2544
+++ kernel-2.6.spec	10 Aug 2006 19:12:09 -0000	1.2545
@@ -1699,6 +1699,7 @@
 %changelog
 * Thu Aug 10 2006 Dave Jones <davej at redhat.com>
 - GFS2/DLM update.
+- Daily GregKH updates.
 
 * Wed Aug  9 2006 Roland McGrath <roland at redhat.com>
 - Fix utrace_regset nits breaking s390.

linux-2.6-compile-fixes.patch:
 Makefile                      |    4 ----
 arch/ia64/kernel/ia64_ksyms.c |    1 +
 2 files changed, 1 insertion(+), 4 deletions(-)

Index: linux-2.6-compile-fixes.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/linux-2.6-compile-fixes.patch,v
retrieving revision 1.99
retrieving revision 1.100
diff -u -r1.99 -r1.100
--- linux-2.6-compile-fixes.patch	10 Aug 2006 01:04:07 -0000	1.99
+++ linux-2.6-compile-fixes.patch	10 Aug 2006 19:12:10 -0000	1.100
@@ -23,28 +23,3 @@
  #define __KERNEL_SYSCALLS__
  #include <asm/unistd.h>
 
-
-commit fff642570dc47ab76491fe81ee6599269c4eb13e
-Author: David S. Miller <davem at sunset.davemloft.net>
-Date:   Wed Aug 9 17:36:15 2006 -0700
-
-    [IPX]: Fix typo, ipxhdr() --> ipx_hdr()
-    
-    Noticed by Dave Jones.
-    
-    Signed-off-by: David S. Miller <davem at davemloft.net>
-
-diff --git a/net/ipx/af_ipx.c b/net/ipx/af_ipx.c
-index 4019642..bef3f61 100644
---- a/net/ipx/af_ipx.c
-+++ b/net/ipx/af_ipx.c
-@@ -1645,7 +1645,7 @@ static int ipx_rcv(struct sk_buff *skb, 
- 	if (!pskb_may_pull(skb, sizeof(struct ipxhdr)))
- 		goto drop;
- 
--	ipx_pktsize = ntohs(ipxhdr(skb)->ipx_pktsize);
-+	ipx_pktsize = ntohs(ipx_hdr(skb)->ipx_pktsize);
- 	
- 	/* Too small or invalid header? */
- 	if (ipx_pktsize < sizeof(struct ipxhdr) ||
-

linux-2.6-lockdep-fixes.patch:
 a/net/ipv6/icmp.c                             |   13 ++++++++++
 linux-2.6.17-mm6/include/net/sock.h           |   33 +++++++++++++++++++++++---
 linux-2.6.18-rc1/drivers/input/serio/libps2.c |    6 ++--
 linux-2.6.18-rc1/include/linux/libps2.h       |   12 ++++++++-
 linux-2.6.18-rc1/net/socket.c                 |    8 +++++-
 5 files changed, 64 insertions(+), 8 deletions(-)

Index: linux-2.6-lockdep-fixes.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/linux-2.6-lockdep-fixes.patch,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- linux-2.6-lockdep-fixes.patch	9 Aug 2006 18:42:54 -0000	1.17
+++ linux-2.6-lockdep-fixes.patch	10 Aug 2006 19:12:10 -0000	1.18
@@ -387,61 +387,3 @@
  
  		/* Enough space for 2 64K ICMP packets, including
  		 * sk_buff struct overhead.
-_
-From: Herbert Xu <herbert at gondor.apana.org.au>
-To: davem at davemloft.net, davej at redhat.com (Dave Jones)
-Subject: Re: another networking lockdep trace.
-Cc: netdev at vger.kernel.org, yoshfuji at linux-ipv6.org, mingo at elte.hu,
-        arjan at linux.intel.com
-In-Reply-To: <20060808184157.GB4880 at redhat.com>
-Message-Id: <E1GAmbn-0006Ts-00 at gondolin.me.apana.org.au>
-Date: Wed, 09 Aug 2006 21:52:23 +1000
-
-Dave Jones <davej at redhat.com> wrote:
->
-> Aug  7 06:47:44 localhost kernel: inconsistent {in-softirq-W} -> {softirq-on-W}
-> usage.
-> Aug  7 06:47:44 localhost kernel: ip/2617 [HC0[0]:SC0[0]:HE1:SE1] takes:
-> Aug  7 06:47:44 localhost kernel:  (&ifa->lock){-+..}, at: [<f90a3836>]
-> inet6_addr_add+0xf8/0x13e [ipv6]
-> Aug  7 06:47:44 localhost kernel: {in-softirq-W} state was registered at:
-> Aug  7 06:47:44 localhost kernel:   [<c043bfb9>] lock_acquire+0x4b/0x6a
-> Aug  7 06:47:44 localhost kernel:   [<c060f428>] _spin_lock_bh+0x1e/0x2d
-> Aug  7 06:47:44 localhost kernel:   [<f90a4757>] addrconf_dad_timer+0x3a/0xe2 [ipv6]
-
-Nice.  This is a bug introduced less than 2 weeks ago.  We're finally
-getting some dividends from the lock validator :) Thanks guys!
-
-[IPV6]: The ifa lock is a BH lock
-
-The ifa lock is expected to be taken in BH context (by addrconf timers)
-so we must disable BH when accessing it from user context.
-
-Signed-off-by: Herbert Xu <herbert at gondor.apana.org.au>
-
-Cheers,
--- 
-Visit Openswan at http://www.openswan.org/
-Email: Herbert Xu ~{PmV>HI~} <herbert at gondor.apana.org.au>
-Home Page: http://gondor.apana.org.au/~herbert/
-PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
---
-diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
-index 8ea1e36..0c5042e 100644
---- a/net/ipv6/addrconf.c
-+++ b/net/ipv6/addrconf.c
-@@ -1909,11 +1909,11 @@ static int inet6_addr_add(int ifindex, s
- 	ifp = ipv6_add_addr(idev, pfx, plen, scope, ifa_flags);
- 
- 	if (!IS_ERR(ifp)) {
--		spin_lock(&ifp->lock);
-+		spin_lock_bh(&ifp->lock);
- 		ifp->valid_lft = valid_lft;
- 		ifp->prefered_lft = prefered_lft;
- 		ifp->tstamp = jiffies;
--		spin_unlock(&ifp->lock);
-+		spin_unlock_bh(&ifp->lock);
- 
- 		addrconf_dad_start(ifp, 0);
- 		in6_ifa_put(ifp);
-




More information about the fedora-cvs-commits mailing list