Leisner.Henr@xerox.com (Marty) (03/15/88)
I inserted the following patch into fs/open.c/do_open() to allow the memory
manager to read files with only the X bit set.
#ifdef ORIGINAL
if ((r = forbidden(rip, bits, 0)) != OK) {
put_inode(rip); /* can't open: protection violation */
return(r);
}
#else
/* patch to allow X bit to be sufficient to execute file -- MM does it's
* own protection checks
*/
if(who != MM_PROC_NR && ((r = forbidden(rip, bits, 0)) != OK)) {
/* allow MM to open up anything he wants */
put_inode(rip); /* can't open: protection violation */
return(r);
}
#endif
Since the memory manager goes through mm/utility/allowed to check file
permissions, I'm suspending access checks in fs on mm open calls. Kinda
kludgey, but seems to do what I want without any bad side effects. Anyone have
any better ideas?
I suppose a cleaner way may be to define a special open bit which becomes
something like EXEC_ONLY.
It looks to be reasonable to perhaps push off the access level checking in
mm/utility/access to the file system.
marty
ARPA: leisner.henr@xerox.com
GV: leisner.henr
NS: martin leisner:henr801c:xerox
UUCP: nsc!nscimg!amps!marty