[Bug 85] New: couldn't write file ,call syscall ,ex. sys_open
bugzilla-daemon@netfilter.org
bugzilla-daemon@netfilter.org
Fri, 25 Apr 2003 08:13:24 +0200
https://bugzilla.netfilter.org/cgi-bin/bugzilla/show_bug.cgi?id=85
Summary: couldn't write file ,call syscall ,ex. sys_open
Product: netfilter/iptables
Version: linux-2.4.x
Platform: i386
OS/Version: RedHat Linux
Status: NEW
Severity: major
Priority: P2
Component: ip_tables (kernel)
AssignedTo: zpeak@163.com
ReportedBy: zpeak@163.com
CC: netfilter-buglog@lists.netfilter.org
Hello:
I program the firewall used the iptable under linux ,The kernel is 2.4.18 ,
I coun't call the system call ,example sys_open ,sys_close,
The problem is i could't write file ,what can i do ,
the error is :
error ....
kernel panic :Aiee,killing interrupt handler!
In interrupt handler - not syncing
Please help me ,Thank you .
yours zpeak
/*------------------------------------------------------------------------------
-----------------------
*Atteched the source and the problem
--------------------------------------------------------------------------------
--------------------*/
#ifndef __KERNEL__
#define __KERNEL__
#endif
#ifndef MODULE
#define MODULE
#endif
#include <linux/module.h>
#include <linux/skbuff.h>
#include <linux/netdevice.h>
#include <linux/config.h>
#include <linux/ip.h>
#include <linux/tcp.h>
#include <linux/udp.h>
#include <linux/spinlock.h>
#include <asm-i386/segment.h>
#include <asm-i386/uaccess.h>
#include <linux/netfilter_ipv4.h>
static unsigned int myfirewall(unsigned int hooknum,struct sk_buff **skb,
const struct net_device *in,
const struct net_device *out,int (*okfn)(struct sk_buff*))
{
mm_segment_t old_fs =get_fs() ;
mm_segment_t new_fs =get_ds();
printk("The old fs is [%lu]\n",old_fs.seg) ;
printk("The neww fs is [%lu]\n ",new_fs.seg) ;
/* I found the old_fs and new_fs is in the same address
* But in other module is different ,why,can you tell me
*/
int fd = 0;
char pathname[50] ="/test/log/8.mail" ;
set_fs(new_fs) ;
fd = sys_open(pathname,O_WRONLY|O_CREAT,S_IRUSR|S_IWUSR);
printk("fd is [%d]",fd);
sys_write(fd,"Mail has develope sucesses , ",20) ;
sys_close(fd);
set_fs(old_fs) ;
return NF_ACCEPT;
}
static struct nf_hook_ops iplimitfilter=
{
{NULL,NULL},
myfirewall,
PF_INET,
NF_IP_PRE_ROUTING,
NF_IP_PRI_FILTER
};
int init_module(void)
{
mm_segment_t old_fs =get_fs() ;
mm_segment_t new_fs =get_ds();
printk("The** old fs is [%lu]\n",old_fs.seg) ;
printk("The** neww fs is [%lu]\n ",new_fs.seg) ;
return nf_register_hook(&iplimitfilter);
}
void cleanup_module(void)
{
nf_unregister_hook(&iplimitfilter);
}
------------------------------------------------------------
gcc -D__KERNEL__ -WALL -I /usr/src/linux.2.4.18/include myfirewall.c
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.