Hello,
I'm enabling swap in kernel version 4.9.206 for an embedded system, however I want users of that kernel to not be able to use mtd partitions for swap, so I made the change below. Is there a better way to do this within the kernel? Can this change have undesirable
effects on the kernel?
diff --git a/mm/swapfile.c b/mm/swapfile.c
index 855f62ab8c1b..92fed4eb7a97 100644
--- a/mm/swapfile.c
+++ b/mm/swapfile.c
@@ -2450,6 +2450,22 @@ SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags)
mapping = swap_file->f_mapping;
inode = mapping->host;
+ if( S_ISBLK(inode->i_mode) )
+ if( imajor(inode) == MTD_BLOCK_MAJOR )
+ {
+ pr_warn("It is not allowed to use internal flash partitions for swap.\n");
+ error = -EINVAL;
+ goto bad_swap;
+ }
+
+ if( S_ISREG(inode->i_mode) )
+ if( MAJOR(inode->i_sb->s_dev) == MTD_BLOCK_MAJOR )
+ {
+ pr_warn("It is not allowed to use files in internal flash for swap.\n");
+ error = -EINVAL;
+ goto bad_swap;
+ }
+
/* If S_ISREG(inode->i_mode) will do inode_lock(inode); */
error = claim_swapfile(p, inode);
if (unlikely(error)) |