Merge remote-tracking branch 'char-misc/char-misc-next'
[deliverable/linux.git] / drivers / char / mem.c
index a33163dbb913541ad6649de8e9a43f8256e1742a..5bb1985ec484aef267e3c551c3068ec0dee14b1c 100644 (file)
@@ -381,6 +381,9 @@ static ssize_t read_kmem(struct file *file, char __user *buf,
        char *kbuf; /* k-addr because vread() takes vmlist_lock rwlock */
        int err = 0;
 
+       if (!pfn_valid(PFN_DOWN(p)))
+               return -EIO;
+
        read = 0;
        if (p < (unsigned long) high_memory) {
                low_count = count;
@@ -509,6 +512,9 @@ static ssize_t write_kmem(struct file *file, const char __user *buf,
        char *kbuf; /* k-addr because vwrite() takes vmlist_lock rwlock */
        int err = 0;
 
+       if (!pfn_valid(PFN_DOWN(p)))
+               return -EIO;
+
        if (p < (unsigned long) high_memory) {
                unsigned long to_write = min_t(unsigned long, count,
                                               (unsigned long)high_memory - p);
This page took 0.032582 seconds and 5 git commands to generate.