From: "" <linwy@mail.ustc.edu.cn>
To: linux-kernel@vger.kernel.org
Subject: a question about kernel copy userspace data
Date: Thu, 29 Mar 2007 15:29:57 +0800 [thread overview]
Message-ID: <375153397.05466@ustc.edu.cn> (raw)
hello ,
i am programming a trial firewall based on netfilter ,which needs the module to
access the data of user space ,so i use copy_from_user() but it can't work ,the
code(simple test code) is like this:
-------user space program-----
#include <stdlib.h>
#include <stdio.h>
int main(int argc ,char *argv[]) {
char para[100]="insmod test.ko ";
int c=24;
unsigned int point=&c;
printf("%u\n",point);
char b[11]="0000000000"; /*convert the unsigned to chars */
int j=10;
int siz=0;
while(point>0) {
b[--j]=point%10+48;
point=point/10;
siz++;
}
char ips[30]="point=";
strcat(ips,&b[10-siz]);
strcat(para,ips);
puts(para);
system("make");
system(para);
}
-------kernel module-----------
#include <linux/module.h>
#include <linux/netfilter_ipv4.h>
#include <linux/tcp.h>
#include <linux/moduleparam.h>
MODULE_LICENSE("Dual BSD/GPL");
static unsigned int *point;
module_param(point, uint , S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
MODULE_PARM_DESC(point, "the pointer of user space");
static unsigned int
linuxmag_hook(unsigned int hook, struct sk_buff **pskb,
const struct net_device *indev, const
struct net_device *outdev, int
(*okfn)(struct sk_buff *))
{
printk("world\n");
printk(" %u\n",point);
int *b;
b=kmalloc(sizeof(int),GFP_KERNEL);
copy_from_user(b,(int *)point,sizeof(int));
printk("user space's value=%u\n",*b);
}
static struct nf_hook_ops linuxmag_ops
= { .hook = linuxmag_hook,
.owner = THIS_MODULE,
.pf = PF_INET,
.hooknum = NF_IP_LOCAL_OUT,
.priority = NF_IP_PRI_FILTER-1
};
static int __init init(void)
{
return nf_register_hook(&linuxmag_ops);
}
static void __exit fini(void)
{
nf_unregister_hook(&linuxmag_ops);
}
module_init(init);
module_exit(fini);
i check the /var/log/messages.
the user space's value is 0
not the right value 24 which i defined in main().
this question puzzled me for a few days,and i am a fresh man about kernel.is
there anyone can help me?
any answer would be appreciated very much .
next reply other threads:[~2007-03-29 7:39 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-03-29 7:29 linwy [this message]
2007-03-29 8:11 ` a question about kernel copy userspace data Cong WANG
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=375153397.05466@ustc.edu.cn \
--to=linwy@mail.ustc.edu.cn \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.