开发者

inode_operations , warning: initialization from incompatible pointer type

I'm trying to compile a simple Kernel program that read and write from a proc file.

I'm trying to set permission to that file by overriding the permission fp in inode_operations struct (.permission)

static int module_permission(struct inode *inode, int op, struct nameidata *foo)

{ . . . }

static struct inode_operations Inode_Ops_4_Our_Proc_File = {
    .permission = module_permission,        /* check for permissions */

};

Our_Proc_File->proc_iops = &Inode_Ops_4_Our_Proc_File;

For some rea开发者_Go百科son, when I compile this i get -> warning: initialization from incompatible pointer type on the following line:

        .permission = module_permission,        /* check for permissions */

Any idea how to solve this?

Thanks!


What kernel version are you using ? I am on 2.6.33 and this is how inode_operations is declared :

struct inode_operations {
    ...
int (*permission) (struct inode *, int);
    int (*check_acl)(struct inode *, int);
int (*setattr) (struct dentry *, struct iattr *);
    int (*getattr) (struct vfsmount *mnt, struct dentry *, struct kstat *);
    ...
}

If your kernel has the same thing, then the function signature of your module_permission function is (struct inode *, int, struct nameidata *) where as .permission expects (struct inode *, int)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜