mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-04 20:19:47 +08:00
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;
|
|
}
|