diff options
| author | Robert Love <rlove@google.com> | 2008-04-29 16:44:10 -0400 | 
|---|---|---|
| committer | Arve Hjønnevåg <arve@android.com> | 2013-07-01 13:34:56 -0700 | 
| commit | df30b7c96af858ed2fca315e9cf10386630f1b9d (patch) | |
| tree | cc680d2ce7442d002294b1b8650fe23f299e9e0d | |
| parent | 4f948f64ab7180b482b159993c79fabd2d1a7172 (diff) | |
| download | olio-linux-3.10-df30b7c96af858ed2fca315e9cf10386630f1b9d.tar.xz olio-linux-3.10-df30b7c96af858ed2fca315e9cf10386630f1b9d.zip  | |
Make /dev/mem configurable, as we don't want it.
Signed-off-by: Brian Swetland <swetland@google.com>
| -rw-r--r-- | drivers/char/Kconfig | 13 | ||||
| -rw-r--r-- | drivers/char/mem.c | 17 | 
2 files changed, 30 insertions, 0 deletions
diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig index 3bb6fa3930b..ddbed25c7af 100644 --- a/drivers/char/Kconfig +++ b/drivers/char/Kconfig @@ -6,6 +6,19 @@ menu "Character devices"  source "drivers/tty/Kconfig" +config DEVMEM +	bool "Memory device driver" +	default y +	help +	  The memory driver provides two character devices, mem and kmem, which +	  provide access to the system's memory. The mem device is a view of +	  physical memory, and each byte in the device corresponds to the +	  matching physical address. The kmem device is the same as mem, but +	  the addresses correspond to the kernel's virtual address space rather +	  than physical memory. These devices are standard parts of a Linux +	  system and most users should say Y here. You might say N if very +	  security conscience or memory is tight. +  config DEVKMEM  	bool "/dev/kmem virtual device support"  	default y diff --git a/drivers/char/mem.c b/drivers/char/mem.c index 1ccbe9482fa..38d3069b7f0 100644 --- a/drivers/char/mem.c +++ b/drivers/char/mem.c @@ -60,6 +60,7 @@ static inline int valid_mmap_phys_addr_range(unsigned long pfn, size_t size)  }  #endif +#if defined(CONFIG_DEVMEM) || defined(CONFIG_DEVKMEM)  #ifdef CONFIG_STRICT_DEVMEM  static inline int range_is_allowed(unsigned long pfn, unsigned long size)  { @@ -85,7 +86,9 @@ static inline int range_is_allowed(unsigned long pfn, unsigned long size)  	return 1;  }  #endif +#endif +#ifdef CONFIG_DEVMEM  void __weak unxlate_dev_mem_ptr(unsigned long phys, void *addr)  {  } @@ -212,6 +215,9 @@ static ssize_t write_mem(struct file *file, const char __user *buf,  	*ppos += written;  	return written;  } +#endif	/* CONFIG_DEVMEM */ + +#if defined(CONFIG_DEVMEM) || defined(CONFIG_DEVKMEM)  int __weak phys_mem_access_prot_allowed(struct file *file,  	unsigned long pfn, unsigned long size, pgprot_t *vma_prot) @@ -333,6 +339,7 @@ static int mmap_mem(struct file *file, struct vm_area_struct *vma)  	}  	return 0;  } +#endif	/* CONFIG_DEVMEM */  #ifdef CONFIG_DEVKMEM  static int mmap_kmem(struct file *file, struct vm_area_struct *vma) @@ -727,6 +734,8 @@ static loff_t null_lseek(struct file *file, loff_t offset, int orig)  	return file->f_pos = 0;  } +#if defined(CONFIG_DEVMEM) || defined(CONFIG_DEVKMEM) || defined(CONFIG_DEVPORT) +  /*   * The memory devices use the full 32/64 bits of the offset, and so we cannot   * check against negative addresses: they are ok. The return value is weird, @@ -760,10 +769,14 @@ static loff_t memory_lseek(struct file *file, loff_t offset, int orig)  	return ret;  } +#endif + +#if defined(CONFIG_DEVMEM) || defined(CONFIG_DEVKMEM) || defined(CONFIG_DEVPORT)  static int open_port(struct inode *inode, struct file *filp)  {  	return capable(CAP_SYS_RAWIO) ? 0 : -EPERM;  } +#endif  #define zero_lseek	null_lseek  #define full_lseek      null_lseek @@ -774,6 +787,7 @@ static int open_port(struct inode *inode, struct file *filp)  #define open_kmem	open_mem  #define open_oldmem	open_mem +#ifdef CONFIG_DEVMEM  static const struct file_operations mem_fops = {  	.llseek		= memory_lseek,  	.read		= read_mem, @@ -782,6 +796,7 @@ static const struct file_operations mem_fops = {  	.open		= open_mem,  	.get_unmapped_area = get_unmapped_area_mem,  }; +#endif  #ifdef CONFIG_DEVKMEM  static const struct file_operations kmem_fops = { @@ -851,7 +866,9 @@ static const struct memdev {  	const struct file_operations *fops;  	struct backing_dev_info *dev_info;  } devlist[] = { +#ifdef CONFIG_DEVMEM  	 [1] = { "mem", 0, &mem_fops, &directly_mappable_cdev_bdi }, +#endif  #ifdef CONFIG_DEVKMEM  	 [2] = { "kmem", 0, &kmem_fops, &directly_mappable_cdev_bdi },  #endif  |