selinux/hooks.c won't build on ia64.
2.6.0-test3 + ia64 patch or 2.6.0-test4.
security/selinux/hooks.c: In function `selinux_file_fcntl':
security/selinux/hooks.c:2032: error: `F_GETLK64' undeclared (first use in
this function) security/selinux/hooks.c:2033: error: `F_SETLK64' undeclared
(first use in this function) security/selinux/hooks.c:2034: error:
`F_SETLKW64' undeclared (first use in this function)
The __64 versions of these are defined in include/asm-ia64/compat.h. I don't
see a good way to #include asm/compat.h, nor is it available for all
processor architectures.
~Randy
On Fri, 22 Aug 2003, Randy.Dunlap wrote:
> selinux/hooks.c won't build on ia64.
> 2.6.0-test3 + ia64 patch or 2.6.0-test4.
>
> security/selinux/hooks.c: In function `selinux_file_fcntl':
> security/selinux/hooks.c:2032: error: `F_GETLK64' undeclared (first use in
> this function) security/selinux/hooks.c:2033: error: `F_SETLK64' undeclared
> (first use in this function) security/selinux/hooks.c:2034: error:
> `F_SETLKW64' undeclared (first use in this function)
>
> The __64 versions of these are defined in include/asm-ia64/compat.h. I don't
> see a good way to #include asm/compat.h, nor is it available for all
> processor architectures.
It is available via <linux/compat.h> if CONFIG_COMPAT is defined.
Does the patch below fix this for you?
- James
--
James Morris
<[email protected]>
diff -urN -X dontdiff linux-2.6.0-test4.orig/security/selinux/hooks.c linux-2.6.0-test4.w1/security/selinux/hooks.c
--- linux-2.6.0-test4.orig/security/selinux/hooks.c 2003-08-23 11:53:14.000000000 +1000
+++ linux-2.6.0-test4.w1/security/selinux/hooks.c 2003-08-25 00:31:58.655604472 +1000
@@ -44,6 +44,7 @@
#include <linux/ext2_fs.h>
#include <linux/proc_fs.h>
#include <linux/kd.h>
+#include <linux/compat.h>
#include <net/icmp.h>
#include <net/ip.h> /* for sysctl_local_port_range[] */
#include <net/tcp.h> /* struct or_callable used in sock_rcv_skb */
On Mon, Aug 25, 2003 at 12:49:52AM +1000, James Morris wrote:
> > see a good way to #include asm/compat.h, nor is it available for all
> > processor architectures.
>
> It is available via <linux/compat.h> if CONFIG_COMPAT is defined.
>
> Does the patch below fix this for you?
Argg, this is b0rked. {asm,linux}/compat.h are for the 32bit compatiblity
code. 64bit arches don't have fcntl64 - see the #if BITS_PER_LONG == 32
around sys_fcntl64 in fcntl.c..
On Sun, 24 Aug 2003, Christoph Hellwig wrote:
> Argg, this is b0rked. {asm,linux}/compat.h are for the 32bit compatiblity
> code. 64bit arches don't have fcntl64 - see the #if BITS_PER_LONG == 32
> around sys_fcntl64 in fcntl.c..
Indeed. How about this?
- James
--
James Morris
<[email protected]>
diff -urN -X dontdiff linux-2.6.0-test4.orig/security/selinux/hooks.c linux-2.6.0-test4.w1/security/selinux/hooks.c
--- linux-2.6.0-test4.orig/security/selinux/hooks.c 2003-08-23 11:53:14.000000000 +1000
+++ linux-2.6.0-test4.w1/security/selinux/hooks.c 2003-08-25 01:23:11.690432168 +1000
@@ -2057,9 +2057,11 @@
case F_GETLK:
case F_SETLK:
case F_SETLKW:
+#if BITS_PER_LONG == 32
case F_GETLK64:
case F_SETLK64:
case F_SETLKW64:
+#endif
if (!file->f_dentry || !file->f_dentry->d_inode) {
err = -EINVAL;
break;
James Morris wrote:
> On Sun, 24 Aug 2003, Christoph Hellwig wrote:
>
>> Argg, this is b0rked. {asm,linux}/compat.h are for the 32bit compatiblity
>> code. 64bit arches don't have fcntl64 - see the #if BITS_PER_LONG == 32
>> around sys_fcntl64 in fcntl.c..
>
> Indeed. How about this?
Fixes the problem on 64 bit s390. I still get a __you_cannot_kmalloc_that_much
link error in avtab_init() and some more warnings about selinux:
security/selinux/hooks.c: In function `selinux_bprm_set_security':
security/selinux/hooks.c:1384: warning: cast to pointer from integer of different size
security/selinux/hooks.c:1430: warning: cast to pointer from integer of different size
security/selinux/hooks.c: In function `selinux_bprm_compute_creds':
security/selinux/hooks.c:1520: warning: cast from pointer to integer of different size
security/selinux/hooks.c: In function `selinux_getprocattr':
security/selinux/hooks.c:3147: warning: passing arg 3 of `security_sid_to_context' from incompatible pointer type
security/selinux/ss/ebitmap.c: In function `ebitmap_read':
security/selinux/ss/ebitmap.c:255: warning: int format, different type arg (arg 3)
security/selinux/ss/ebitmap.c:264: warning: int format, different type arg (arg 3)
security/selinux/ss/ebitmap.c:287: warning: int format, different type arg (arg 3)
security/selinux/ss/ebitmap.c:293: warning: int format, different type arg (arg 3)
security/selinux/ss/policydb.c: In function `policydb_read':
security/selinux/ss/policydb.c:1078: warning: int format, different type arg (arg 3)
The link error can be avoided by using vmalloc for htable, but there
may be better solutions.
===== security/selinux/ss/avtab.c 1.1 vs edited =====
--- 1.1/security/selinux/ss/avtab.c Thu Jul 17 11:38:01 2003
+++ edited/security/selinux/ss/avtab.c Sun Aug 24 02:02:24 2003
@@ -106,7 +106,7 @@
}
h->htable[i] = NULL;
}
- kfree(h->htable);
+ vfree(h->htable);
}
@@ -138,7 +138,7 @@
{
int i;
- h->htable = kmalloc(sizeof(*(h->htable)) * AVTAB_SIZE, GFP_KERNEL);
+ h->htable = vmalloc(sizeof(*(h->htable)) * AVTAB_SIZE);
if (!h->htable)
return -ENOMEM;
for (i = 0; i < AVTAB_SIZE; i++)
===== security/selinux/ss/global.h 1.2 vs edited =====
--- 1.2/security/selinux/ss/global.h Sun Aug 10 13:22:59 2003
+++ edited/security/selinux/ss/global.h Sun Aug 24 02:09:28 2003
@@ -8,6 +8,7 @@
#include <linux/in.h>
#include <linux/spinlock.h>
#include <linux/sched.h>
+#include <linux/vmalloc.h>
#include "flask.h"
#include "avc.h"
On Sun, 24 Aug 2003 02:21:08 +0200 Arnd Bergmann <[email protected]> wrote:
| James Morris wrote:
|
| > On Sun, 24 Aug 2003, Christoph Hellwig wrote:
| >
| >> Argg, this is b0rked. {asm,linux}/compat.h are for the 32bit compatiblity
| >> code. 64bit arches don't have fcntl64 - see the #if BITS_PER_LONG == 32
| >> around sys_fcntl64 in fcntl.c..
| >
| > Indeed. How about this?
Yes, the second patch fixes for me also. [2.6.0-test4 now]
I also see the warnings below.
| security/selinux/hooks.c: In function `selinux_bprm_set_security':
| security/selinux/hooks.c:1384: warning: cast to pointer from integer of different size
| security/selinux/hooks.c:1430: warning: cast to pointer from integer of different size
| security/selinux/hooks.c: In function `selinux_bprm_compute_creds':
| security/selinux/hooks.c:1520: warning: cast from pointer to integer of different size
| security/selinux/hooks.c: In function `selinux_getprocattr':
| security/selinux/hooks.c:3147: warning: passing arg 3 of `security_sid_to_context' from incompatible pointer type
Thanks.
--
~Randy [mantra: Always include kernel version.]
"Everything is relative."
On Mon, 25 Aug 2003, Randy.Dunlap wrote:
> Yes, the second patch fixes for me also. [2.6.0-test4 now]
> I also see the warnings below.
>
> | security/selinux/hooks.c: In function `selinux_bprm_set_security':
> | security/selinux/hooks.c:1384: warning: cast to pointer from integer of different size
> | security/selinux/hooks.c:1430: warning: cast to pointer from integer of different size
> | security/selinux/hooks.c: In function `selinux_bprm_compute_creds':
> | security/selinux/hooks.c:1520: warning: cast from pointer to integer of different size
> | security/selinux/hooks.c: In function `selinux_getprocattr':
> | security/selinux/hooks.c:3147: warning: passing arg 3 of `security_sid_to_context' from incompatible pointer type
>
Yep, a fix for this is forthcoming.
- James
--
James Morris
<[email protected]>