[PATCH] IPV{4,6}: fixed /proc/net/raw{,6} seq_file support

STALE8505d

2 messages, 2 authors, 2003-06-30 · open the first message on its own page

[PATCH] IPV{4,6}: fixed /proc/net/raw{,6} seq_file support

From: YOSHIFUJI Hideaki / 吉藤英明 <hidden>
Date: 2003-06-30 14:09:55

Hello,

There were bugs in /proc/net/raw{,6} seq_file support.
Sorry, my fault.  This patch fixes the problem.

Thanks in advance.

Index: linux-2.5/net/ipv4/raw.c
===================================================================
RCS file: /home/cvs/linux-2.5/net/ipv4/raw.c,v
retrieving revision 1.31
diff -u -r1.31 raw.c
--- linux-2.5/net/ipv4/raw.c	21 Jun 2003 16:20:28 -0000	1.31
+++ linux-2.5/net/ipv4/raw.c	30 Jun 2003 12:48:00 -0000
@@ -801,7 +801,24 @@
 
 static int raw_seq_open(struct inode *inode, struct file *file)
 {
-	return seq_open(file, &raw_seq_ops);
+	struct seq_file *seq;
+	int rc = -ENOMEM;
+	struct raw_iter_state *s = kmalloc(sizeof(*s), GFP_KERNEL);
+
+	if (!s)
+		goto out;
+	rc = seq_open(file, &raw_seq_ops);
+	if (rc)
+		goto out_kfree;
+
+	seq = file->private_data;
+	seq->private = s;
+	memset(s, 0, sizeof(*s));
+out:
+	return rc;
+out_kfree:
+	kfree(s);
+	goto out;
 }
 
 static struct file_operations raw_seq_fops = {
@@ -809,7 +826,7 @@
 	.open	 = raw_seq_open,
 	.read	 = seq_read,
 	.llseek	 = seq_lseek,
-	.release = seq_release,
+	.release = seq_release_private,
 };
 
 int __init raw_proc_init(void)
Index: linux-2.5/net/ipv6/raw.c
===================================================================
RCS file: /home/cvs/linux-2.5/net/ipv6/raw.c,v
retrieving revision 1.30
diff -u -r1.30 raw.c
--- linux-2.5/net/ipv6/raw.c	21 Jun 2003 16:20:28 -0000	1.30
+++ linux-2.5/net/ipv6/raw.c	30 Jun 2003 12:48:00 -0000
@@ -1029,7 +1029,22 @@
 
 static int raw6_seq_open(struct inode *inode, struct file *file)
 {
-	return seq_open(file, &raw6_seq_ops);
+	struct seq_file *seq;
+	int rc = -ENOMEM;
+	struct raw6_iter_state *s = kmalloc(sizeof(*s), GFP_KERNEL);
+	if (!s)
+		goto out;
+	rc = seq_open(file, &raw6_seq_ops);
+	if (rc)
+		goto out_kfree;
+	seq = file->private_data;
+	seq->private = s;
+	memset(s, 0, sizeof(*s));
+out:
+	return rc;
+out_kfree:
+	kfree(s);
+	goto out;
 }
 
 static struct file_operations raw6_seq_fops = {
@@ -1037,7 +1052,7 @@
 	.open =		raw6_seq_open,
 	.read =		seq_read,
 	.llseek =	seq_lseek,
-	.release =	seq_release,
+	.release =	seq_release_private,
 };
 
 int __init raw6_proc_init(void)
-- 
Hideaki YOSHIFUJI @ USAGI Project <yoshfuji@linux-ipv6.org>
GPG FP: 9022 65EB 1ECF 3AD1 0BDF  80D8 4807 F894 E062 0EEA

Re: [PATCH] IPV{4,6}: fixed /proc/net/raw{,6} seq_file support

From: James Morris <hidden>
Date: 2003-06-30 16:08:48

On Mon, 30 Jun 2003, YOSHIFUJI Hideaki / [iso-2022-jp] $B5HF#1QL@(B wrote:
Hello,

There were bugs in /proc/net/raw{,6} seq_file support.
Sorry, my fault.  This patch fixes the problem.
Also applied!

-- 
James Morris
[off-list ref]
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help