aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic/patches-4.4
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/generic/patches-4.4')
-rw-r--r--target/linux/generic/patches-4.4/500-yaffs-Kbuild-integration.patch18
-rw-r--r--target/linux/generic/patches-4.4/502-yaffs-fix-compat-tags-handling.patch239
-rw-r--r--target/linux/generic/patches-4.4/503-yaffs-add-tags-9bytes-mount-option.patch115
-rw-r--r--target/linux/generic/patches-4.4/504-yaffs-3.16-new-fops.patch29
-rw-r--r--target/linux/generic/patches-4.4/505-yaffs-3.19-f_dentry-remove.patch95
-rw-r--r--target/linux/generic/patches-4.4/506-yaffs2-using-new-follow_link-and-put_link.patch47
-rw-r--r--target/linux/generic/patches-4.4/903-debloat_direct_io.patch2
7 files changed, 1 insertions, 544 deletions
diff --git a/target/linux/generic/patches-4.4/500-yaffs-Kbuild-integration.patch b/target/linux/generic/patches-4.4/500-yaffs-Kbuild-integration.patch
deleted file mode 100644
index fe1a612945..0000000000
--- a/target/linux/generic/patches-4.4/500-yaffs-Kbuild-integration.patch
+++ /dev/null
@@ -1,18 +0,0 @@
---- a/fs/Kconfig
-+++ b/fs/Kconfig
-@@ -30,6 +30,7 @@ source "fs/ocfs2/Kconfig"
- source "fs/btrfs/Kconfig"
- source "fs/nilfs2/Kconfig"
- source "fs/f2fs/Kconfig"
-+source "fs/yaffs2/Kconfig"
-
- config FS_DAX
- bool "Direct Access (DAX) support"
---- a/fs/Makefile
-+++ b/fs/Makefile
-@@ -126,3 +126,5 @@ obj-y += exofs/ # Multiple modules
- obj-$(CONFIG_CEPH_FS) += ceph/
- obj-$(CONFIG_PSTORE) += pstore/
- obj-$(CONFIG_EFIVAR_FS) += efivarfs/
-+obj-$(CONFIG_YAFFS_FS) += yaffs2/
-+
diff --git a/target/linux/generic/patches-4.4/502-yaffs-fix-compat-tags-handling.patch b/target/linux/generic/patches-4.4/502-yaffs-fix-compat-tags-handling.patch
deleted file mode 100644
index a18cf6fd7b..0000000000
--- a/target/linux/generic/patches-4.4/502-yaffs-fix-compat-tags-handling.patch
+++ /dev/null
@@ -1,239 +0,0 @@
-Subject: yaffs: fix compat tags handling
-
-Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
----
---- a/fs/yaffs2/yaffs_tagscompat.c
-+++ b/fs/yaffs2/yaffs_tagscompat.c
-@@ -17,7 +17,9 @@
- #include "yaffs_getblockinfo.h"
- #include "yaffs_trace.h"
-
-+#if 0
- static void yaffs_handle_rd_data_error(struct yaffs_dev *dev, int nand_chunk);
-+#endif
-
-
- /********** Tags ECC calculations *********/
-@@ -71,6 +73,7 @@ int yaffs_check_tags_ecc(struct yaffs_ta
- return 0;
- }
-
-+#if 0
- /********** Tags **********/
-
- static void yaffs_load_tags_to_spare(struct yaffs_spare *spare_ptr,
-@@ -379,3 +382,214 @@ void yaffs_tags_compat_install(struct ya
- if(!dev->tagger.mark_bad_fn)
- dev->tagger.mark_bad_fn = yaffs_tags_compat_mark_bad;
- }
-+#else
-+
-+#include "yaffs_packedtags1.h"
-+
-+static int yaffs_tags_compat_write(struct yaffs_dev *dev,
-+ int nand_chunk,
-+ const u8 *data,
-+ const struct yaffs_ext_tags *tags)
-+{
-+ struct yaffs_packed_tags1 pt1;
-+ u8 tag_buf[9];
-+ int retval;
-+
-+ /* we assume that yaffs_packed_tags1 and yaffs_tags are compatible */
-+ compile_time_assertion(sizeof(struct yaffs_packed_tags1) == 12);
-+ compile_time_assertion(sizeof(struct yaffs_tags) == 8);
-+
-+ yaffs_pack_tags1(&pt1, tags);
-+ yaffs_calc_tags_ecc((struct yaffs_tags *)&pt1);
-+
-+ /* When deleting a chunk, the upper layer provides only skeletal
-+ * tags, one with is_deleted set. However, we need to update the
-+ * tags, not erase them completely. So we use the NAND write property
-+ * that only zeroed-bits stick and set tag bytes to all-ones and
-+ * zero just the (not) deleted bit.
-+ */
-+ if (!dev->param.tags_9bytes) {
-+ if (tags->is_deleted) {
-+ memset(&pt1, 0xff, 8);
-+ /* clear delete status bit to indicate deleted */
-+ pt1.deleted = 0;
-+ }
-+ memcpy(tag_buf, &pt1, 8);
-+ } else {
-+ if (tags->is_deleted) {
-+ memset(tag_buf, 0xff, 8);
-+ tag_buf[8] = 0;
-+ } else {
-+ memcpy(tag_buf, &pt1, 8);
-+ tag_buf[8] = 0xff;
-+ }
-+ }
-+
-+ retval = dev->drv.drv_write_chunk_fn(dev, nand_chunk,
-+ data,
-+ (data) ? dev->data_bytes_per_chunk : 0,
-+ tag_buf,
-+ (dev->param.tags_9bytes) ? 9 : 8);
-+
-+ return retval;
-+}
-+
-+/* Return with empty extended tags but add ecc_result.
-+ */
-+static int return_empty_tags(struct yaffs_ext_tags *tags,
-+ enum yaffs_ecc_result ecc_result,
-+ int retval)
-+{
-+ if (tags) {
-+ memset(tags, 0, sizeof(*tags));
-+ tags->ecc_result = ecc_result;
-+ }
-+
-+ return retval;
-+}
-+
-+static int yaffs_tags_compat_read(struct yaffs_dev *dev,
-+ int nand_chunk,
-+ u8 *data,
-+ struct yaffs_ext_tags *tags)
-+{
-+ struct yaffs_packed_tags1 pt1;
-+ enum yaffs_ecc_result ecc_result;
-+ int retval;
-+ int deleted;
-+ u8 tag_buf[9];
-+
-+ retval = dev->drv.drv_read_chunk_fn(dev, nand_chunk,
-+ data, dev->param.total_bytes_per_chunk,
-+ tag_buf,
-+ (dev->param.tags_9bytes) ? 9 : 8,
-+ &ecc_result);
-+
-+ switch (ecc_result) {
-+ case YAFFS_ECC_RESULT_NO_ERROR:
-+ case YAFFS_ECC_RESULT_FIXED:
-+ break;
-+
-+ case YAFFS_ECC_RESULT_UNFIXED:
-+ default:
-+ return_empty_tags(tags, YAFFS_ECC_RESULT_UNFIXED, 0);
-+ tags->block_bad = dev->drv.drv_check_bad_fn(dev, nand_chunk);
-+ return YAFFS_FAIL;
-+ }
-+
-+ /* Check for a blank/erased chunk. */
-+ if (yaffs_check_ff(tag_buf, 8)) {
-+ /* when blank, upper layers want ecc_result to be <= NO_ERROR */
-+ return return_empty_tags(tags, YAFFS_ECC_RESULT_NO_ERROR,
-+ YAFFS_OK);
-+ }
-+
-+ memcpy(&pt1, tag_buf, 8);
-+
-+ if (!dev->param.tags_9bytes) {
-+ /* Read deleted status (bit) then return it to it's non-deleted
-+ * state before performing tags mini-ECC check. pt1.deleted is
-+ * inverted.
-+ */
-+ deleted = !pt1.deleted;
-+ pt1.deleted = 1;
-+ } else {
-+ deleted = (hweight8(tag_buf[8]) < 7) ? 1 : 0;
-+ }
-+
-+ /* Check the packed tags mini-ECC and correct if necessary/possible. */
-+ retval = yaffs_check_tags_ecc((struct yaffs_tags *)&pt1);
-+ switch (retval) {
-+ case 0:
-+ /* no tags error, use MTD result */
-+ break;
-+ case 1:
-+ /* recovered tags-ECC error */
-+ dev->n_tags_ecc_fixed++;
-+ if (ecc_result == YAFFS_ECC_RESULT_NO_ERROR)
-+ ecc_result = YAFFS_ECC_RESULT_FIXED;
-+ break;
-+ default:
-+ /* unrecovered tags-ECC error */
-+ dev->n_tags_ecc_unfixed++;
-+ return return_empty_tags(tags, YAFFS_ECC_RESULT_UNFIXED,
-+ YAFFS_FAIL);
-+ }
-+
-+ /* Unpack the tags to extended form and set ECC result.
-+ * [set should_be_ff just to keep yaffs_unpack_tags1 happy]
-+ */
-+ pt1.should_be_ff = 0xffffffff;
-+ yaffs_unpack_tags1(tags, &pt1);
-+ tags->ecc_result = ecc_result;
-+
-+ /* Set deleted state */
-+ tags->is_deleted = deleted;
-+ return YAFFS_OK;
-+}
-+
-+static int yaffs_tags_compat_mark_bad(struct yaffs_dev *dev, int block_no)
-+{
-+ return dev->drv.drv_mark_bad_fn(dev, block_no);
-+}
-+
-+static int yaffs_tags_compat_query_block(struct yaffs_dev *dev,
-+ int block_no,
-+ enum yaffs_block_state *state,
-+ u32 *seq_number)
-+{
-+ struct yaffs_ext_tags tags;
-+ int retval;
-+
-+ yaffs_trace(YAFFS_TRACE_MTD, "%s %d", __func__, block_no);
-+
-+ *seq_number = 0;
-+
-+ retval = dev->drv.drv_check_bad_fn(dev, block_no);
-+ if (retval == YAFFS_FAIL) {
-+ *state = YAFFS_BLOCK_STATE_DEAD;
-+ goto out;
-+ }
-+
-+ yaffs_tags_compat_read(dev, block_no * dev->param.chunks_per_block,
-+ NULL, &tags);
-+
-+ if (tags.ecc_result != YAFFS_ECC_RESULT_NO_ERROR) {
-+ yaffs_trace(YAFFS_TRACE_MTD, "block %d is marked bad",
-+ block_no);
-+ *state = YAFFS_BLOCK_STATE_NEEDS_SCAN;
-+ } else if (tags.chunk_used) {
-+ *seq_number = tags.seq_number;
-+ *state = YAFFS_BLOCK_STATE_NEEDS_SCAN;
-+ } else {
-+ *state = YAFFS_BLOCK_STATE_EMPTY;
-+ }
-+
-+ retval = YAFFS_OK;
-+
-+out:
-+ yaffs_trace(YAFFS_TRACE_MTD,
-+ "block query returns seq %u state %d",
-+ *seq_number, *state);
-+
-+ return retval;
-+}
-+
-+void yaffs_tags_compat_install(struct yaffs_dev *dev)
-+{
-+ if (dev->param.is_yaffs2)
-+ return;
-+
-+ if (!dev->tagger.write_chunk_tags_fn)
-+ dev->tagger.write_chunk_tags_fn = yaffs_tags_compat_write;
-+
-+ if (!dev->tagger.read_chunk_tags_fn)
-+ dev->tagger.read_chunk_tags_fn = yaffs_tags_compat_read;
-+
-+ if (!dev->tagger.query_block_fn)
-+ dev->tagger.query_block_fn = yaffs_tags_compat_query_block;
-+
-+ if (!dev->tagger.mark_bad_fn)
-+ dev->tagger.mark_bad_fn = yaffs_tags_compat_mark_bad;
-+}
-+#endif
diff --git a/target/linux/generic/patches-4.4/503-yaffs-add-tags-9bytes-mount-option.patch b/target/linux/generic/patches-4.4/503-yaffs-add-tags-9bytes-mount-option.patch
deleted file mode 100644
index 3f51bafc11..0000000000
--- a/target/linux/generic/patches-4.4/503-yaffs-add-tags-9bytes-mount-option.patch
+++ /dev/null
@@ -1,115 +0,0 @@
-Subject: yaffs: add support for tags-9bytes mount option
-
-Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
----
---- a/fs/yaffs2/yaffs_vfs.c
-+++ b/fs/yaffs2/yaffs_vfs.c
-@@ -2644,6 +2644,7 @@ static const struct super_operations yaf
-
- struct yaffs_options {
- int inband_tags;
-+ int tags_9bytes;
- int skip_checkpoint_read;
- int skip_checkpoint_write;
- int no_cache;
-@@ -2683,6 +2684,8 @@ static int yaffs_parse_options(struct ya
-
- if (!strcmp(cur_opt, "inband-tags")) {
- options->inband_tags = 1;
-+ } else if (!strcmp(cur_opt, "tags-9bytes")) {
-+ options->tags_9bytes = 1;
- } else if (!strcmp(cur_opt, "tags-ecc-off")) {
- options->tags_ecc_on = 0;
- options->tags_ecc_overridden = 1;
-@@ -2756,7 +2759,6 @@ static struct super_block *yaffs_interna
- struct yaffs_param *param;
-
- int read_only = 0;
-- int inband_tags = 0;
-
- struct yaffs_options options;
-
-@@ -2796,6 +2798,9 @@ static struct super_block *yaffs_interna
-
- memset(&options, 0, sizeof(options));
-
-+ if (IS_ENABLED(CONFIG_YAFFS_9BYTE_TAGS))
-+ options.tags_9bytes = 1;
-+
- if (yaffs_parse_options(&options, data_str)) {
- /* Option parsing failed */
- return NULL;
-@@ -2829,17 +2834,22 @@ static struct super_block *yaffs_interna
- }
-
- /* Added NCB 26/5/2006 for completeness */
-- if (yaffs_version == 2 && !options.inband_tags
-- && WRITE_SIZE(mtd) == 512) {
-+ if (yaffs_version == 2 &&
-+ (!options.inband_tags || options.tags_9bytes) &&
-+ WRITE_SIZE(mtd) == 512) {
- yaffs_trace(YAFFS_TRACE_ALWAYS, "auto selecting yaffs1");
- yaffs_version = 1;
- }
-
-- if (mtd->oobavail < sizeof(struct yaffs_packed_tags2) ||
-- options.inband_tags)
-- inband_tags = 1;
-+ if (yaffs_version == 2 &&
-+ mtd->oobavail < sizeof(struct yaffs_packed_tags2)) {
-+ yaffs_trace(YAFFS_TRACE_ALWAYS, "auto selecting inband tags");
-+ options.inband_tags = 1;
-+ }
-
-- if(yaffs_verify_mtd(mtd, yaffs_version, inband_tags) < 0)
-+ err = yaffs_verify_mtd(mtd, yaffs_version, options.inband_tags,
-+ options.tags_9bytes);
-+ if (err < 0)
- return NULL;
-
- /* OK, so if we got here, we have an MTD that's NAND and looks
-@@ -2896,7 +2906,8 @@ static struct super_block *yaffs_interna
-
- param->n_reserved_blocks = 5;
- param->n_caches = (options.no_cache) ? 0 : 10;
-- param->inband_tags = inband_tags;
-+ param->inband_tags = options.inband_tags;
-+ param->tags_9bytes = options.tags_9bytes;
-
- param->enable_xattr = 1;
- if (options.lazy_loading_overridden)
---- a/fs/yaffs2/yaffs_mtdif.c
-+++ b/fs/yaffs2/yaffs_mtdif.c
-@@ -278,7 +278,8 @@ struct mtd_info * yaffs_get_mtd_device(d
- return mtd;
- }
-
--int yaffs_verify_mtd(struct mtd_info *mtd, int yaffs_version, int inband_tags)
-+int yaffs_verify_mtd(struct mtd_info *mtd, int yaffs_version, int inband_tags,
-+ int tags_9bytes)
- {
- if (yaffs_version == 2) {
- if ((WRITE_SIZE(mtd) < YAFFS_MIN_YAFFS2_CHUNK_SIZE ||
-@@ -297,6 +298,12 @@ int yaffs_verify_mtd(struct mtd_info *mt
- );
- return -1;
- }
-+
-+ if (tags_9bytes && mtd->oobavail < 9) {
-+ yaffs_trace(YAFFS_TRACE_ALWAYS,
-+ "MTD device does not support 9-byte tags");
-+ return -1;
-+ }
- }
-
- return 0;
---- a/fs/yaffs2/yaffs_mtdif.h
-+++ b/fs/yaffs2/yaffs_mtdif.h
-@@ -21,5 +21,6 @@
- void yaffs_mtd_drv_install(struct yaffs_dev *dev);
- struct mtd_info * yaffs_get_mtd_device(dev_t sdev);
- void yaffs_put_mtd_device(struct mtd_info *mtd);
--int yaffs_verify_mtd(struct mtd_info *mtd, int yaffs_version, int inband_tags);
-+int yaffs_verify_mtd(struct mtd_info *mtd, int yaffs_version, int inband_tags,
-+ int tags_9bytes);
- #endif
diff --git a/target/linux/generic/patches-4.4/504-yaffs-3.16-new-fops.patch b/target/linux/generic/patches-4.4/504-yaffs-3.16-new-fops.patch
deleted file mode 100644
index 32b4fdfa39..0000000000
--- a/target/linux/generic/patches-4.4/504-yaffs-3.16-new-fops.patch
+++ /dev/null
@@ -1,29 +0,0 @@
---- a/fs/yaffs2/yaffs_vfs.c
-+++ b/fs/yaffs2/yaffs_vfs.c
-@@ -774,7 +774,25 @@ static int yaffs_sync_object(struct file
- }
-
-
--#if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 22))
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 16, 0))
-+static const struct file_operations yaffs_file_operations = {
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 1, 0))
-+ .read = new_sync_read,
-+#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(4, 1, 0) */
-+ .read_iter = generic_file_read_iter,
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 1, 0))
-+ .write = new_sync_write,
-+#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(4, 1, 0) */
-+ .write_iter = generic_file_write_iter,
-+ .mmap = generic_file_mmap,
-+ .flush = yaffs_file_flush,
-+ .fsync = yaffs_sync_object,
-+ .splice_read = generic_file_splice_read,
-+ .splice_write = iter_file_splice_write,
-+ .llseek = generic_file_llseek,
-+};
-+
-+#elif (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 22))
- static const struct file_operations yaffs_file_operations = {
- .read = do_sync_read,
- .write = do_sync_write,
diff --git a/target/linux/generic/patches-4.4/505-yaffs-3.19-f_dentry-remove.patch b/target/linux/generic/patches-4.4/505-yaffs-3.19-f_dentry-remove.patch
deleted file mode 100644
index 0d4b6bf04f..0000000000
--- a/target/linux/generic/patches-4.4/505-yaffs-3.19-f_dentry-remove.patch
+++ /dev/null
@@ -1,95 +0,0 @@
---- a/fs/yaffs2/yaffs_vfs.c
-+++ b/fs/yaffs2/yaffs_vfs.c
-@@ -283,7 +283,7 @@ static int yaffs_readpage_nolock(struct
- (long long)pos,
- (unsigned)PAGE_CACHE_SIZE);
-
-- obj = yaffs_dentry_to_obj(f->f_dentry);
-+ obj = yaffs_dentry_to_obj(f->f_path.dentry);
-
- dev = obj->my_dev;
-
-@@ -481,7 +481,7 @@ static ssize_t yaffs_hold_space(struct f
-
- int n_free_chunks;
-
-- obj = yaffs_dentry_to_obj(f->f_dentry);
-+ obj = yaffs_dentry_to_obj(f->f_path.dentry);
-
- dev = obj->my_dev;
-
-@@ -499,7 +499,7 @@ static void yaffs_release_space(struct f
- struct yaffs_obj *obj;
- struct yaffs_dev *dev;
-
-- obj = yaffs_dentry_to_obj(f->f_dentry);
-+ obj = yaffs_dentry_to_obj(f->f_path.dentry);
-
- dev = obj->my_dev;
-
-@@ -591,7 +591,7 @@ static ssize_t yaffs_file_write(struct f
- struct inode *inode;
- struct yaffs_dev *dev;
-
-- obj = yaffs_dentry_to_obj(f->f_dentry);
-+ obj = yaffs_dentry_to_obj(f->f_path.dentry);
-
- if (!obj) {
- yaffs_trace(YAFFS_TRACE_OS,
-@@ -603,7 +603,7 @@ static ssize_t yaffs_file_write(struct f
-
- yaffs_gross_lock(dev);
-
-- inode = f->f_dentry->d_inode;
-+ inode = f->f_path.dentry->d_inode;
-
- if (!S_ISBLK(inode->i_mode) && f->f_flags & O_APPEND)
- ipos = inode->i_size;
-@@ -727,7 +727,7 @@ static int yaffs_file_flush(struct file
- static int yaffs_file_flush(struct file *file)
- #endif
- {
-- struct yaffs_obj *obj = yaffs_dentry_to_obj(file->f_dentry);
-+ struct yaffs_obj *obj = yaffs_dentry_to_obj(file->f_path.dentry);
-
- struct yaffs_dev *dev = obj->my_dev;
-
-@@ -1734,7 +1734,7 @@ static int yaffs_iterate(struct file *f,
-
- char name[YAFFS_MAX_NAME_LENGTH + 1];
-
-- obj = yaffs_dentry_to_obj(f->f_dentry);
-+ obj = yaffs_dentry_to_obj(f->f_path.dentry);
- dev = obj->my_dev;
-
- yaffs_gross_lock(dev);
-@@ -1798,14 +1798,14 @@ static int yaffs_readdir(struct file *f,
- struct yaffs_obj *obj;
- struct yaffs_dev *dev;
- struct yaffs_search_context *sc;
-- struct inode *inode = f->f_dentry->d_inode;
-+ struct inode *inode = f->f_path.dentry->d_inode;
- unsigned long offset, curoffs;
- struct yaffs_obj *l;
- int ret_val = 0;
-
- char name[YAFFS_MAX_NAME_LENGTH + 1];
-
-- obj = yaffs_dentry_to_obj(f->f_dentry);
-+ obj = yaffs_dentry_to_obj(f->f_path.dentry);
- dev = obj->my_dev;
-
- yaffs_gross_lock(dev);
-@@ -1839,10 +1839,10 @@ static int yaffs_readdir(struct file *f,
- if (offset == 1) {
- yaffs_trace(YAFFS_TRACE_OS,
- "yaffs_readdir: entry .. ino %d",
-- (int)f->f_dentry->d_parent->d_inode->i_ino);
-+ (int)f->f_path.dentry->d_parent->d_inode->i_ino);
- yaffs_gross_unlock(dev);
- if (filldir(dirent, "..", 2, offset,
-- f->f_dentry->d_parent->d_inode->i_ino,
-+ f->f_path.dentry->d_parent->d_inode->i_ino,
- DT_DIR) < 0) {
- yaffs_gross_lock(dev);
- goto out;
diff --git a/target/linux/generic/patches-4.4/506-yaffs2-using-new-follow_link-and-put_link.patch b/target/linux/generic/patches-4.4/506-yaffs2-using-new-follow_link-and-put_link.patch
deleted file mode 100644
index 60c4e378e0..0000000000
--- a/target/linux/generic/patches-4.4/506-yaffs2-using-new-follow_link-and-put_link.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From d4eb3ab036f8c37c5bc5f45ad0fa4dc34b7228c8 Mon Sep 17 00:00:00 2001
-From: Kevin Hao <kexin.hao@windriver.com>
-Date: Wed, 24 Feb 2016 14:37:13 +0800
-Subject: [PATCH 3/3] yaffs2: using new ->follow_link() and ->put_link()
- calling conventions
-
-As what we did in commit 680baacbca69 ("new ->follow_link() and
-->put_link() calling conventions").
-
-Signed-off-by: Kevin Hao <kexin.hao@windriver.com>
-Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
----
- fs/yaffs2/yaffs_vfs.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
---- a/fs/yaffs2/yaffs_vfs.c
-+++ b/fs/yaffs2/yaffs_vfs.c
-@@ -1060,7 +1060,7 @@ static int yaffs_readlink(struct dentry
- }
-
- #if (YAFFS_NEW_FOLLOW_LINK == 1)
--static void *yaffs_follow_link(struct dentry *dentry, struct nameidata *nd)
-+static const char *yaffs_follow_link(struct dentry *dentry, void **cookie)
- {
- void *ret;
- #else
-@@ -1082,7 +1082,7 @@ static int yaffs_follow_link(struct dent
- goto out;
- }
- #if (YAFFS_NEW_FOLLOW_LINK == 1)
-- nd_set_link(nd, alias);
-+ *cookie = alias;
- ret = alias;
- out:
- if (ret_int)
-@@ -1114,9 +1114,9 @@ static void yaffs_put_inode(struct inode
- #endif
-
- #if (YAFFS_NEW_FOLLOW_LINK == 1)
--void yaffs_put_link(struct dentry *dentry, struct nameidata *nd, void *alias)
-+void yaffs_put_link(struct inode *inode, void *cookie)
- {
-- kfree(alias);
-+ kfree(cookie);
- }
- #endif
-
diff --git a/target/linux/generic/patches-4.4/903-debloat_direct_io.patch b/target/linux/generic/patches-4.4/903-debloat_direct_io.patch
index 7f6c529940..3ced09a2a5 100644
--- a/target/linux/generic/patches-4.4/903-debloat_direct_io.patch
+++ b/target/linux/generic/patches-4.4/903-debloat_direct_io.patch
@@ -1,6 +1,6 @@
--- a/fs/Kconfig
+++ b/fs/Kconfig
-@@ -74,6 +74,11 @@ config FILE_LOCKING
+@@ -73,6 +73,11 @@ config FILE_LOCKING
for filesystems like NFS and for the flock() system
call. Disabling this option saves about 11k.