An inode structure caches the superblock flags (which include the noexec
mount option), in the member "i_flags".
When remounting "exec", only the superblock flags [s_flags] are updated.
Any 'cached' inodes still have the original flag value, which causes
IS_NOEXEC(inode) to return true.
The solution would be to parse the inode cache, and update "i_flags".
This code would belong in fs/inode.c, and would be similar to
invalidate_inodes() - although, obviously, there would be differences...
Regards,
markhe
------------------------------------------------------------------
Mark Hemment, Unix/C Software Engineer (Contractor)
markhe@nextd.demon.co.uk http://www.nextd.demon.co.uk/
"Success has many fathers, failure is a B**TARD!" - anon
------------------------------------------------------------------