Before the commit 
461c3af045d3 ("ext4: Change handle_mount_opt() to use
fs_parameter") ext4 mount option journal_path did follow links in the
provided path.
Bring this behavior back by allowing to pass pathwalk flags to
fs_lookup_param().
Fixes: 461c3af045d3 ("ext4: Change handle_mount_opt() to use fs_parameter")
Signed-off-by: Lukas Czerner <lczerner@redhat.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Link: https://lore.kernel.org/r/20221004135803.32283-1-lczerner@redhat.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Cc: stable@kernel.org
        int fs_lookup_param(struct fs_context *fc,
                           struct fs_parameter *value,
                           bool want_bdev,
+                          unsigned int flags,
                           struct path *_path);
 
      This takes a parameter that carries a string or filename type and attempts
 
                        return -EINVAL;
                }
 
-               error = fs_lookup_param(fc, param, 1, &path);
+               error = fs_lookup_param(fc, param, 1, LOOKUP_FOLLOW, &path);
                if (error) {
                        ext4_msg(NULL, KERN_ERR, "error: could not find "
                                 "journal device path");
 
  * @fc: The filesystem context to log errors through.
  * @param: The parameter.
  * @want_bdev: T if want a blockdev
+ * @flags: Pathwalk flags passed to filename_lookup()
  * @_path: The result of the lookup
  */
 int fs_lookup_param(struct fs_context *fc,
                    struct fs_parameter *param,
                    bool want_bdev,
+                   unsigned int flags,
                    struct path *_path)
 {
        struct filename *f;
-       unsigned int flags = 0;
        bool put_f;
        int ret;
 
 
 extern int fs_lookup_param(struct fs_context *fc,
                           struct fs_parameter *param,
                           bool want_bdev,
+                          unsigned int flags,
                           struct path *_path);
 
 extern int lookup_constant(const struct constant_table tbl[], const char *name, int not_found);