Page MenuHomeFreeBSD

D45755.id141432.diff
No OneTemporary

D45755.id141432.diff

diff --git a/sys/compat/lindebugfs/lindebugfs.c b/sys/compat/lindebugfs/lindebugfs.c
--- a/sys/compat/lindebugfs/lindebugfs.c
+++ b/sys/compat/lindebugfs/lindebugfs.c
@@ -162,8 +162,6 @@
if (d->dm_fops->release)
d->dm_fops->release(&vn, &lf);
- else
- single_release(&vn, &lf);
if (rc < 0) {
#ifdef INVARIANTS
diff --git a/sys/compat/linuxkpi/common/include/linux/fs.h b/sys/compat/linuxkpi/common/include/linux/fs.h
--- a/sys/compat/linuxkpi/common/include/linux/fs.h
+++ b/sys/compat/linuxkpi/common/include/linux/fs.h
@@ -353,9 +353,8 @@
simple_read_from_buffer(void __user *dest, size_t read_size, loff_t *ppos,
void *orig, size_t buf_size)
{
- void *read_pos = ((char *) orig) + *ppos;
+ void *p, *read_pos = ((char *) orig) + *ppos;
size_t buf_remain = buf_size - *ppos;
- ssize_t num_read;
if (buf_remain < 0 || buf_remain > buf_size)
return -EINVAL;
@@ -363,13 +362,18 @@
if (read_size > buf_remain)
read_size = buf_remain;
- /* copy_to_user returns number of bytes NOT read */
- num_read = read_size - copy_to_user(dest, read_pos, read_size);
- if (num_read == 0)
- return -EFAULT;
- *ppos += num_read;
-
- return (num_read);
+ /*
+ * XXX At time of commit only debugfs consumers could be
+ * identified. If others will use this function we may
+ * have to revise this: normally we would call copy_to_user()
+ * here but lindebugfs will return the result and the
+ * copyout is done elsewhere for us.
+ */
+ p = memcpy(dest, read_pos, read_size);
+ if (p != NULL)
+ *ppos += read_size;
+
+ return (read_size);
}
MALLOC_DECLARE(M_LSATTR);

File Metadata

Mime Type
text/plain
Expires
Sun, Dec 21, 1:39 AM (20 h, 33 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27104564
Default Alt Text
D45755.id141432.diff (1 KB)

Event Timeline