[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#513537: linux-image-2.6.26-1-openvz-amd64 hanging



On Monday 20 April 2009 08:01:59 pm Vitaliy Gusev wrote:
> Hi, Tom. I will prepare and send patch to you in two-three days. Sorry for late
> response, but I was busy.


Hello, Tom!. Does this problem still actual for you? Can you check attached patch? ( do not tune off
CONFIG_USER_RESOURCE)


> 
> On Saturday 18 April 2009 01:19:14 am Tom Rathborne wrote:
> > Hi Vitaliy,
> >
> > On Fri, Apr 03, 2009 at 02:21:45PM +0400, Vitaily Gusev wrote:
> > > On Thursday 02 April 2009 01:57:43 am Tom Rathborne wrote:
> > > > On Wed, Apr 01, 2009 at 05:39:59PM -0400, Tom Rathborne wrote:
> > > > > I commented out the junk in fs/dcache.c and the kernel compiled. :)
> > > > >
> > > > > I will send you the sysrq-D info next time I get the bug!
> > > >
> > > > Oops ... now OpenVZ won't start!
> > > >
> > > >     magrathea:~# vzctl start 101
> > > >     Starting VE ...
> > > >     MOUNTING
> > > >     VE is mounted
> > > >     Error: kernel does not support user resources. Please, rebuild with
> > > > CONFIG_USER_RESOURCE=y VE start failed
> > > >     UNMOUNTING
> > > >     VE is unmounted
> > > >
> > > > I do not see a "CONFIG_USER_RESOURCE is not set" in .config,
> > > > and if I add 'CONFIG_USER_RESOURCE=y' then 'make menuconfig' reports:
> > > >     .config:3953:warning: trying to assign nonexistent symbol
> > > > USER_RESOURCE
> > > >
> > > > I did find a couple of references to it:
> > > >     ./net/ipv4/tcp.c:#ifdef CONFIG_USER_RESOURCE
> > > >     ./net/ipv4/tcp_timer.c:#ifdef CONFIG_USER_RESOURCE
> > > > but it looks like those should be CONFIG_BEANCOUNTERS.
> > > >
> > > > So ... what do I do next? It seems like this bug only happens with
> > > > OpenVZ processes, but OpenVZ will not start without
> > > > CONFIG_BEANCOUNTERS!
> > >
> > > Ok, switching off  CONFIG_BEANCOUNTERS was  a bad idea ;(
> > > I will prepare patch to fix beancounter warning in one-two days and send
> > > to you. Thanks a lot of for your efforts!
> >
> > Debian lenny recently updated its kernel source tree and patches, so I
> > have built a fresh kernel with all of your debugging flags on, and of
> > course CONFIG_BEANCOUNTERS on. I'm using these packages:
> >
> >     linux-patch-debian-2.6.26  2.6.26-15  Debian patches to version 2.6.26
> > of the Linux kernel linux-source-2.6.26        2.6.26-15  Linux kernel
> > source for version 2.6.26 with Debian patches linux-tree-2.6.26         
> > 2.6.26-15  Linux kernel source tree for building Debian kernel images
> >
> > The Debian patch directory is much bigger ... now looks like this:
> >
> >     0015--UB-Double-free-for-UDP-socket.patch.bz2
> >     0016-nfs-fix-nfs-clinet-in-VE-finally.patch.bz2
> >     0017-cpt-bump-image-version-to-VERSION_26.patch.bz2
> >     0018-nfs-add-missed-ve_nfs.h-file.patch.bz2
> >     0020-autofs4-pidns-friendly-oz_mode.patch.bz2
> >     0021-autofs-fix-default-pgrp-vnr.patch.bz2
> >     0022-conntrack-prevent-double-allocate-free-of-protos.patch.bz2
> >     0023-conntrack-prevent-call-register_pernet_subsys-fro.patch.bz2
> >     0024-conntrack-prevent-call-nf_register_hooks-from-VE.patch.bz2
> >     0025-conntrack-Allocate-free-ve_nf_conntrack_l3proto_ipv.patch.bz2
> >     0026-ct-Move-_nf_conntrack_l3proto_ipv6-to-net-namespace.patch.bz2
> >     0027-Fix-erratum-that-causes-memory-corruption.patch.bz2
> >     0028-conntrack-fix-oops-in-nf_ct_frag6_gather.patch.bz2
> >     0029-conntrack-adjust-context-during-freeing.patch.bz2
> >     0031-Add-VE-features-for-sit-and-ipip-devices.patch.bz2
> >     0033-netfilter-NAT-assign-nf_nat_seq_adjust_hook-from-V.patch.bz2
> >     0034-netfilter-call-nf_register_hooks-from-VE0-context-o.patch.bz2
> >     0040-Simplify-call-__dev_change_net_namespace-by-remove.patch.bz2
> >     0041-Adjust-VE-before-call-netdev_unregister_kobject-netd.patch.bz2
> >     0042-iptables-setup-init-iptables-mask-before-net-initia.patch.bz2
> >     0042-netns-fix-net_generic-array-leak.patch.bz2
> >     0043-net-set-ve-context-when-init-exit-method-is-called.patch.bz2
> >     0044-vzwdog-walk-through-the-block-devices-list-properly.patch.bz2
> >     0045-Correct-per-process-capabilities-bounding-set-in-CT.patch.bz2
> >     0046-netns-enable-cross-ve-Unix-sockets.patch.bz2
> >     0047-netfilter-Fix-NULL-dereference-in-nf_nat_setup_info.patch.bz2
> >     0048-netfilter-Add-check-to-the-nat-hooks.patch.bz2
> >     0049-cpt-Make-the-proper-check-for-sigmask.patch.bz2
> >     0050-nfs-Fix-access-to-freed-memory.patch.bz2
> >     0051-NFS-NFS-super-blocks-in-different-VEs-should-be-dif.patch.bz2
> >     0052-ms-fix-inotify-umount.patch.bz2
> >     0054-ve-sanitize-capability-checks-for-namespaces-creati.patch.bz2
> >     0056-nfs-Fix-nfs_match_client.patch.bz2
> >     0057-Add-do_ve_enter_hook.patch.bz2
> >     0058-Add-kthread_create_ve-and-kthread_run_ve-functio.patch.bz2
> >     0059-Don-t-dereference-NULL-tsk-mm-in-ve_move_task.patch.bz2
> >     0060-nfs-use-kthread_run_ve-to-start-lockd.patch.bz2
> >     0063-bridge-don-t-leak-master-device-on-brctl-addif.patch.bz2
> >     0064-net-NETIF_F_VIRTUAL-intersects-with-NETIF_F_LRO.patch.bz2
> >     0065-Fix-broken-permissions-for-Unix98-pty.patch.bz2
> >     0066-Free-skb-nf_bridge-in-veth_xmit-and-venet_xmit.patch.bz2
> >     0067-autofs4-fix-ia32-compat-mode.patch.bz2
> >     0070-pidns-update-leader_pid-at-pidns-attach.patch.bz2
> >     0072-pidns-lost-task-debug-print-uses-wrong-prototype.patch.bz2
> >     0073-pidns-zap-ve-process-only-when-killing-ve-s-init-pi.patch.bz2
> >     0075-bc-fix-permissions-on-proc-bc.patch.bz2
> >     cpt-revert-check-on-sk_reuse-gt-one.patch.bz2
> >     fix-wrong-size-of-ub0_percpu.patch.bz2
> >     netlink-fix-conntrack-oops.patch.bz2
> >     openvz.patch.bz2
> >     simfs-getatts-fix-oops-on-NULL-mnt.patch.bz2
> >
> > I will let you know what happens. Of course I am happy to try a
> > different patch if you send one, and I could put the above patch
> > directory online if you need.
> >
> > Cheers,
> >
> > Tom
> 
> 
diff --git a/kernel/bc/net.c b/kernel/bc/net.c
index e1ffc63..fb0fb25 100644
--- a/kernel/bc/net.c
+++ b/kernel/bc/net.c
@@ -157,9 +157,9 @@ static void ub_sock_snd_wakeup(struct user_beancounter *ub)
 		 * act the same way as ub_tcp_snd_wakeup does.
 		 */
 		sock_hold(sk);
-		read_lock(&sk->sk_callback_lock);
 		spin_unlock(&ub->ub_lock);
 
+		read_lock(&sk->sk_callback_lock);
 		sk->sk_write_space(sk);
 		read_unlock(&sk->sk_callback_lock);
 
@@ -212,9 +212,9 @@ static void ub_tcp_snd_wakeup(struct user_beancounter *ub)
 		 * it belongs to the callback.
 		 */
 		sock_hold(sk);
-		read_lock(&sk->sk_callback_lock);
 		spin_unlock(&ub->ub_lock);
 
+		read_lock(&sk->sk_callback_lock);
 		sk->sk_write_space(sk);
 		read_unlock(&sk->sk_callback_lock);
 

Reply to: