mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-14 17:57:05 +07:00
0b61f8a407
Remove the verbose license text from XFS files and replace them with SPDX tags. This does not change the license of any of the code, merely refers to the common, up-to-date license files in LICENSES/ This change was mostly scripted. fs/xfs/Makefile and fs/xfs/libxfs/xfs_fs.h were modified by hand, the rest were detected and modified by the following command: for f in `git grep -l "GNU General" fs/xfs/` ; do echo $f cat $f | awk -f hdr.awk > $f.new mv -f $f.new $f done And the hdr.awk script that did the modification (including detecting the difference between GPL-2.0 and GPL-2.0+ licenses) is as follows: $ cat hdr.awk BEGIN { hdr = 1.0 tag = "GPL-2.0" str = "" } /^ \* This program is free software/ { hdr = 2.0; next } /any later version./ { tag = "GPL-2.0+" next } /^ \*\// { if (hdr > 0.0) { print "// SPDX-License-Identifier: " tag print str print $0 str="" hdr = 0.0 next } print $0 next } /^ \* / { if (hdr > 1.0) next if (hdr > 0.0) { if (str != "") str = str "\n" str = str $0 next } print $0 next } /^ \*/ { if (hdr > 0.0) next print $0 next } // { if (hdr > 0.0) { if (str != "") str = str "\n" str = str $0 next } print $0 } END { } $ Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
79 lines
1.9 KiB
C
79 lines
1.9 KiB
C
// SPDX-License-Identifier: GPL-2.0+
|
|
/*
|
|
* Copyright (C) 2017 Oracle. All Rights Reserved.
|
|
* Author: Darrick J. Wong <darrick.wong@oracle.com>
|
|
*/
|
|
#include "xfs.h"
|
|
#include "xfs_fs.h"
|
|
#include "xfs_shared.h"
|
|
#include "xfs_format.h"
|
|
#include "xfs_trans_resv.h"
|
|
#include "xfs_mount.h"
|
|
#include "xfs_defer.h"
|
|
#include "xfs_btree.h"
|
|
#include "xfs_bit.h"
|
|
#include "xfs_log_format.h"
|
|
#include "xfs_trans.h"
|
|
#include "xfs_sb.h"
|
|
#include "xfs_inode.h"
|
|
#include "xfs_inode_fork.h"
|
|
#include "xfs_symlink.h"
|
|
#include "scrub/xfs_scrub.h"
|
|
#include "scrub/scrub.h"
|
|
#include "scrub/common.h"
|
|
#include "scrub/trace.h"
|
|
|
|
/* Set us up to scrub a symbolic link. */
|
|
int
|
|
xfs_scrub_setup_symlink(
|
|
struct xfs_scrub_context *sc,
|
|
struct xfs_inode *ip)
|
|
{
|
|
/* Allocate the buffer without the inode lock held. */
|
|
sc->buf = kmem_zalloc_large(XFS_SYMLINK_MAXLEN + 1, KM_SLEEP);
|
|
if (!sc->buf)
|
|
return -ENOMEM;
|
|
|
|
return xfs_scrub_setup_inode_contents(sc, ip, 0);
|
|
}
|
|
|
|
/* Symbolic links. */
|
|
|
|
int
|
|
xfs_scrub_symlink(
|
|
struct xfs_scrub_context *sc)
|
|
{
|
|
struct xfs_inode *ip = sc->ip;
|
|
struct xfs_ifork *ifp;
|
|
loff_t len;
|
|
int error = 0;
|
|
|
|
if (!S_ISLNK(VFS_I(ip)->i_mode))
|
|
return -ENOENT;
|
|
ifp = XFS_IFORK_PTR(ip, XFS_DATA_FORK);
|
|
len = ip->i_d.di_size;
|
|
|
|
/* Plausible size? */
|
|
if (len > XFS_SYMLINK_MAXLEN || len <= 0) {
|
|
xfs_scrub_fblock_set_corrupt(sc, XFS_DATA_FORK, 0);
|
|
goto out;
|
|
}
|
|
|
|
/* Inline symlink? */
|
|
if (ifp->if_flags & XFS_IFINLINE) {
|
|
if (len > XFS_IFORK_DSIZE(ip) ||
|
|
len > strnlen(ifp->if_u1.if_data, XFS_IFORK_DSIZE(ip)))
|
|
xfs_scrub_fblock_set_corrupt(sc, XFS_DATA_FORK, 0);
|
|
goto out;
|
|
}
|
|
|
|
/* Remote symlink; must read the contents. */
|
|
error = xfs_readlink_bmap_ilocked(sc->ip, sc->buf);
|
|
if (!xfs_scrub_fblock_process_error(sc, XFS_DATA_FORK, 0, &error))
|
|
goto out;
|
|
if (strnlen(sc->buf, XFS_SYMLINK_MAXLEN) < len)
|
|
xfs_scrub_fblock_set_corrupt(sc, XFS_DATA_FORK, 0);
|
|
out:
|
|
return error;
|
|
}
|