blob: b0ed1887d9b1bcd2cad789d14df2af61e94e1514 [file] [log] [blame]
Jeff Mahoney12fa8ec2008-05-02 15:03:58 -04001#ifndef _COMPAT_H_
2#define _COMPAT_H_
3
David Woodhouse2db04962008-08-07 11:19:43 -04004#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,26)
5#define trylock_page(page) (!TestSetPageLocked(page))
6#endif
Jeff Mahoney12fa8ec2008-05-02 15:03:58 -04007
Balaji Raobe6e8dc2008-07-21 02:01:56 +05308#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,27)
9static inline struct dentry *d_obtain_alias(struct inode *inode)
10{
11 struct dentry *d;
12
13 if (!inode)
14 return NULL;
15 if (IS_ERR(inode))
16 return ERR_CAST(inode);
17
18 d = d_alloc_anon(inode);
19 if (!d)
20 iput(inode);
21 return d;
22}
23#endif
24
Chris Masone02119d2008-09-05 16:13:11 -040025#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,18)
26static inline void btrfs_drop_nlink(struct inode *inode)
27{
28 inode->i_nlink--;
29}
30
31static inline void btrfs_inc_nlink(struct inode *inode)
32{
33 inode->i_nlink++;
34}
35#else
36# define btrfs_drop_nlink(inode) drop_nlink(inode)
37# define btrfs_inc_nlink(inode) inc_nlink(inode)
38#endif
39
Jeff Mahoney12fa8ec2008-05-02 15:03:58 -040040/*
41 * Even if AppArmor isn't enabled, it still has different prototypes.
42 * Add more distro/version pairs here to declare which has AppArmor applied.
43 */
44#if defined(CONFIG_SUSE_KERNEL)
45# if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
46# define REMOVE_SUID_PATH 1
47# endif
48#endif
49
50/*
51 * catch any other distros that have patched in apparmor. This isn't
52 * 100% reliable because it won't catch people that hand compile their
53 * own distro kernels without apparmor compiled in. But, it is better
54 * than nothing.
55 */
56#ifdef CONFIG_SECURITY_APPARMOR
57# define REMOVE_SUID_PATH 1
58#endif
59
60#endif /* _COMPAT_H_ */