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

Bug#412132: cacct interface misscalced about 100 TB



Hi,

I'm sorry, normaly it shouldn't be a very important bug, but please think about these ones, who have to log the caused traffic, that's very terrible. So could you please add it to the next upload?

Regards, Patrick Matthäi


Bastian Blank schrieb:
severity 412132 important
user debian-kernel@lists.debian.org
usertag dkt-waiting-etch-update
tags 412132 +patch
thanks

On Fri, Feb 23, 2007 at 11:19:57PM +0100, Patrick Matthäi wrote:
I think I've found a serious bug in the vserver image for amd64.
We're running a daemon, which is logging the traffic of all hostmachines. Now I've found a very big mistake in the /proc/virtual/<id>/cacct interface.

Known. Can be fixed with the first stable update, not security relevant.

Available patch, needs to be fixed to avoid abi change (use atomic_t and crop
at the printf):

diff -Nurp linux-2.6.19.2-vs2.2.0-rc9/include/linux/vserver/cacct_def.h linux-2.6.19.2-vs2.2.0-rc9.longatomic/include/linux/vserver/cacct_def.h
--- linux-2.6.19.2-vs2.2.0-rc9/include/linux/vserver/cacct_def.h	2007-01-11 18:10:53.000000000 +0100
+++ linux-2.6.19.2-vs2.2.0-rc9.longatomic/include/linux/vserver/cacct_def.h	2007-02-02 18:17:38.000000000 +0100
@@ -6,8 +6,8 @@
struct _vx_sock_acc {
-	atomic_t count;
-	atomic_t total;
+	atomic_long_t count;
+	atomic_long_t total;
 };
/* context sub struct */
@@ -30,9 +30,9 @@ static inline void __dump_vx_cacct(struc
printk("\t [%d] =", i);
 		for (j=0; j<3; j++) {
-			printk(" [%d] = %8d, %8d", j,
-				atomic_read(&ptr[j].count),
-				atomic_read(&ptr[j].total));
+			printk(" [%d] = %8ld, %8ld", j,
+				atomic_long_read(&ptr[j].count),
+				atomic_long_read(&ptr[j].total));
 		}
 		printk("\n");
 	}
diff -Nurp linux-2.6.19.2-vs2.2.0-rc9/include/linux/vs_socket.h linux-2.6.19.2-vs2.2.0-rc9.longatomic/include/linux/vs_socket.h
--- linux-2.6.19.2-vs2.2.0-rc9/include/linux/vs_socket.h	2007-01-11 18:10:52.000000000 +0100
+++ linux-2.6.19.2-vs2.2.0-rc9.longatomic/include/linux/vs_socket.h	2007-02-02 18:18:14.000000000 +0100
@@ -38,8 +38,8 @@ static inline void __vx_acc_sock(struct if (vxi) {
 		int type = vx_sock_type(family);
- atomic_inc(&vxi->cacct.sock[type][pos].count);
-		atomic_add(size, &vxi->cacct.sock[type][pos].total);
+		atomic_long_inc(&vxi->cacct.sock[type][pos].count);
+		atomic_long_add(size, &vxi->cacct.sock[type][pos].total);
 	}
 }
Bastian





Reply to: