diff options
Diffstat (limited to 'package/kernel')
-rw-r--r-- | package/kernel/mwlwifi/patches/001-remove-vfs_write.patch | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/package/kernel/mwlwifi/patches/001-remove-vfs_write.patch b/package/kernel/mwlwifi/patches/001-remove-vfs_write.patch new file mode 100644 index 0000000000..9703d1d688 --- /dev/null +++ b/package/kernel/mwlwifi/patches/001-remove-vfs_write.patch @@ -0,0 +1,92 @@ +--- a/debugfs.c ++++ b/debugfs.c +@@ -279,7 +279,6 @@ static void core_dump_file(u8 *valbuf, u + u32 append, u32 totallen, bool textmode) + { + struct file *filp_core = NULL; +- mm_segment_t oldfs; + char file_name[40]; + u8 *buf = kmalloc(length * 3, GFP_KERNEL); + u8 *data_p = buf; +@@ -292,9 +291,6 @@ static void core_dump_file(u8 *valbuf, u + sprintf(file_name, "/dev/shm/coredump-%x-%x", + region, (region + totallen)); + +- oldfs = get_fs(); +- set_fs(KERNEL_DS); +- + if (append) + filp_core = filp_open(file_name, O_RDWR | O_APPEND, 0); + else +@@ -317,15 +313,15 @@ static void core_dump_file(u8 *valbuf, u + } + data_p = buf + j; + data_p += sprintf(data_p, "\n"); +- vfs_write(filp_core, buf, strlen(buf), +- &filp_core->f_pos); ++ kernel_write(filp_core, buf, strlen(buf), ++ &filp_core->f_pos); + } else +- vfs_write(filp_core, valbuf, length, &filp_core->f_pos); ++ kernel_write(filp_core, valbuf, length, ++ &filp_core->f_pos); + + filp_close(filp_core, current->files); + } + +- set_fs(oldfs); + kfree(buf); + } + +@@ -1338,7 +1334,6 @@ static ssize_t mwl_debugfs_ba_hist_read( + u8 bmap0flag, nobaflag; + char buff[500], file_location[20]; + struct file *filp_bahisto; +- mm_segment_t oldfs; + u8 *data_p = buff; + ssize_t ret; + +@@ -1354,13 +1349,10 @@ static ssize_t mwl_debugfs_ba_hist_read( + memset(file_location, 0, sizeof(file_location)); + sprintf(file_location, "/tmp/ba_histo-%d", priv->ba_aid); + +- oldfs = get_fs(); +- set_fs(KERNEL_DS); + filp_bahisto = filp_open(file_location, + O_RDWR | O_CREAT | O_TRUNC, 0); + + if (IS_ERR(filp_bahisto)) { +- set_fs(oldfs); + ret = -EIO; + goto err; + } +@@ -1401,8 +1393,8 @@ static ssize_t mwl_debugfs_ba_hist_read( + + /* Buffer is full. Write to file and reset buf */ + if ((strlen(buff) + 36) >= 500) { +- vfs_write(filp_bahisto, buff, strlen(buff), +- &filp_bahisto->f_pos); ++ kernel_write(filp_bahisto, buff, strlen(buff), ++ &filp_bahisto->f_pos); + mdelay(2); + memset(buff, 0, sizeof(buff)); + data_p = buff; +@@ -1426,8 +1418,8 @@ static ssize_t mwl_debugfs_ba_hist_read( + data_p += sprintf(data_p, "%8d\n", nobaflag); + } + +- vfs_write(filp_bahisto, buff, strlen(buff), +- &filp_bahisto->f_pos); ++ kernel_write(filp_bahisto, buff, strlen(buff), ++ &filp_bahisto->f_pos); + len += scnprintf(p + len, size - len, + "hole: %d, expect: %d, bmap0: %d, noba: %d\n", + baholecnt, baexpcnt, bmap0cnt, nobacnt); +@@ -1440,7 +1432,6 @@ static ssize_t mwl_debugfs_ba_hist_read( + priv->ba_aid); + + filp_close(filp_bahisto, current->files); +- set_fs(oldfs); + + ret = simple_read_from_buffer(ubuf, count, ppos, p, len); + |