Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
f94b777
firewire: add missing MODULE_DESCRIPTION() to test modules
May 23, 2024
9ee267a
fs: smb: common: add missing MODULE_DESCRIPTION() macros
May 26, 2024
d7ba701
xfs: Clear W=1 warning in xfs_iwalk_run_callbacks()
johnpgarry May 2, 2024
b33874f
xfs: Stop using __maybe_unused in xfs_alloc.c
johnpgarry May 2, 2024
2b3f004
xfs: drop xfarray sortinfo folio on error
May 22, 2024
97835e6
xfs: fix xfs_init_attr_trans not handling explicit operation codes
May 22, 2024
38de567
xfs: allow symlinks with short remote targets
May 22, 2024
95b19e2
xfs: don't open-code u64_to_user_ptr
May 22, 2024
b0c6bcd
xfs: Add cond_resched to block unmap range and reflink remap path
riteshharjani May 7, 2024
a607468
kconfig: remove unused expr_is_no()
masahir0y May 19, 2024
aabdc96
kconfig: fix comparison to constant symbols, 'm', 'n'
masahir0y May 19, 2024
31894d3
kconfig: remove redundant check in expr_join_or()
masahir0y May 19, 2024
659bbf7
kbuild: scripts/gdb: Replace missed $(srctree)/$(src) w/ $(src)
dianders May 20, 2024
04b8cb0
kbuild: avoid unneeded kallsyms step 3
masahir0y May 20, 2024
b18b047
kbuild: change scripts/mksysmap into sed script
masahir0y May 20, 2024
3430f65
kbuild: fix short log for AS in link-vmlinux.sh
masahir0y May 20, 2024
3c562a7
kbuild: remove a stale comment about cleaning in link-vmlinux.sh
masahir0y May 22, 2024
e06a698
scripts/make_fit: Drop fdt image entry compatible string
wens May 28, 2024
b1e7cee
powerpc/bpf: enforce full ordering for ATOMIC operations with BPF_FETCH
puranjaymohan May 13, 2024
3bd27a8
kheaders: explicitly define file modes for archived headers
metti May 28, 2024
6e58e01
kheaders: use `command -v` to test for existence of `cpio`
ojeda May 28, 2024
1b1c9f0
dt-bindings: kbuild: Fix dt_binding_check on unconfigured build
robherring May 28, 2024
12870ae
powerpc/pseries/lparcfg: drop error message from guest name lookup
nathanlynch May 24, 2024
2d43cc7
powerpc/uaccess: Fix build errors seen with GCC 13/14
mpe May 29, 2024
5093494
powerpc/uaccess: Use YZ asm constraint for ld
mpe May 29, 2024
be2fc65
powerpc: Limit ARCH_HAS_KERNEL_FPU_SUPPORT to PPC64
SiFiveHolland May 29, 2024
88da52c
landlock: Fix d_parent walk
l0kod May 16, 2024
0055f53
selftests/landlock: Add layout1.refer_mount_root
l0kod May 16, 2024
518549c
cifs: fix creating sockets when using sfu mount options
smfrench May 29, 2024
7bc4244
Revert "VT: Use macros to define ioctls"
gregkh Jun 1, 2024
d9aab0b
Merge tag 'landlock-6.10-rc2' of git://git.kernel.org/pub/scm/linux/k…
torvalds Jun 1, 2024
f26ee67
Merge tag 'tty-6.10-rc2' of git://git.kernel.org/pub/scm/linux/kernel…
torvalds Jun 1, 2024
bbeb121
Merge tag 'xfs-6.10-fixes-1' of git://git.kernel.org/pub/scm/fs/xfs/x…
torvalds Jun 1, 2024
ec9eeb8
Merge tag 'kbuild-fixes-v6.10' of git://git.kernel.org/pub/scm/linux/…
torvalds Jun 1, 2024
89be402
Merge tag '6.10-rc1-smb3-client-fixes' of git://git.samba.org/sfrench…
torvalds Jun 1, 2024
54bec8e
Merge tag 'firewire-fixes-6.10-rc1' of git://git.kernel.org/pub/scm/l…
torvalds Jun 2, 2024
8381469
Merge tag 'powerpc-6.10-2' of git://git.kernel.org/pub/scm/linux/kern…
torvalds Jun 2, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion arch/powerpc/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ config PPC
select ARCH_HAS_GCOV_PROFILE_ALL
select ARCH_HAS_HUGEPD if HUGETLB_PAGE
select ARCH_HAS_KCOV
select ARCH_HAS_KERNEL_FPU_SUPPORT if PPC_FPU
select ARCH_HAS_KERNEL_FPU_SUPPORT if PPC64 && PPC_FPU
select ARCH_HAS_MEMBARRIER_CALLBACKS
select ARCH_HAS_MEMBARRIER_SYNC_CORE
select ARCH_HAS_MEMREMAP_COMPAT_ALIGN if PPC_64S_HASH_MMU
Expand Down
27 changes: 27 additions & 0 deletions arch/powerpc/include/asm/uaccess.h
Original file line number Diff line number Diff line change
Expand Up @@ -92,9 +92,25 @@ __pu_failed: \
: label)
#endif

#ifdef CONFIG_CC_IS_CLANG
#define DS_FORM_CONSTRAINT "Z<>"
#else
#define DS_FORM_CONSTRAINT "YZ<>"
#endif

#ifdef __powerpc64__
#ifdef CONFIG_PPC_KERNEL_PREFIXED
#define __put_user_asm2_goto(x, ptr, label) \
__put_user_asm_goto(x, ptr, label, "std")
#else
#define __put_user_asm2_goto(x, addr, label) \
asm goto ("1: std%U1%X1 %0,%1 # put_user\n" \
EX_TABLE(1b, %l2) \
: \
: "r" (x), DS_FORM_CONSTRAINT (*addr) \
: \
: label)
#endif // CONFIG_PPC_KERNEL_PREFIXED
#else /* __powerpc64__ */
#define __put_user_asm2_goto(x, addr, label) \
asm goto( \
Expand Down Expand Up @@ -165,8 +181,19 @@ do { \
#endif

#ifdef __powerpc64__
#ifdef CONFIG_PPC_KERNEL_PREFIXED
#define __get_user_asm2_goto(x, addr, label) \
__get_user_asm_goto(x, addr, label, "ld")
#else
#define __get_user_asm2_goto(x, addr, label) \
asm_goto_output( \
"1: ld%U1%X1 %0, %1 # get_user\n" \
EX_TABLE(1b, %l2) \
: "=r" (x) \
: DS_FORM_CONSTRAINT (*addr) \
: \
: label)
#endif // CONFIG_PPC_KERNEL_PREFIXED
#else /* __powerpc64__ */
#define __get_user_asm2_goto(x, addr, label) \
asm_goto_output( \
Expand Down
12 changes: 12 additions & 0 deletions arch/powerpc/net/bpf_jit_comp32.c
Original file line number Diff line number Diff line change
Expand Up @@ -900,6 +900,15 @@ int bpf_jit_build_body(struct bpf_prog *fp, u32 *image, u32 *fimage, struct code

/* Get offset into TMP_REG */
EMIT(PPC_RAW_LI(tmp_reg, off));
/*
* Enforce full ordering for operations with BPF_FETCH by emitting a 'sync'
* before and after the operation.
*
* This is a requirement in the Linux Kernel Memory Model.
* See __cmpxchg_u32() in asm/cmpxchg.h as an example.
*/
if ((imm & BPF_FETCH) && IS_ENABLED(CONFIG_SMP))
EMIT(PPC_RAW_SYNC());
tmp_idx = ctx->idx * 4;
/* load value from memory into r0 */
EMIT(PPC_RAW_LWARX(_R0, tmp_reg, dst_reg, 0));
Expand Down Expand Up @@ -953,6 +962,9 @@ int bpf_jit_build_body(struct bpf_prog *fp, u32 *image, u32 *fimage, struct code

/* For the BPF_FETCH variant, get old data into src_reg */
if (imm & BPF_FETCH) {
/* Emit 'sync' to enforce full ordering */
if (IS_ENABLED(CONFIG_SMP))
EMIT(PPC_RAW_SYNC());
EMIT(PPC_RAW_MR(ret_reg, ax_reg));
if (!fp->aux->verifier_zext)
EMIT(PPC_RAW_LI(ret_reg - 1, 0)); /* higher 32-bit */
Expand Down
12 changes: 12 additions & 0 deletions arch/powerpc/net/bpf_jit_comp64.c
Original file line number Diff line number Diff line change
Expand Up @@ -846,6 +846,15 @@ int bpf_jit_build_body(struct bpf_prog *fp, u32 *image, u32 *fimage, struct code

/* Get offset into TMP_REG_1 */
EMIT(PPC_RAW_LI(tmp1_reg, off));
/*
* Enforce full ordering for operations with BPF_FETCH by emitting a 'sync'
* before and after the operation.
*
* This is a requirement in the Linux Kernel Memory Model.
* See __cmpxchg_u64() in asm/cmpxchg.h as an example.
*/
if ((imm & BPF_FETCH) && IS_ENABLED(CONFIG_SMP))
EMIT(PPC_RAW_SYNC());
tmp_idx = ctx->idx * 4;
/* load value from memory into TMP_REG_2 */
if (size == BPF_DW)
Expand Down Expand Up @@ -908,6 +917,9 @@ int bpf_jit_build_body(struct bpf_prog *fp, u32 *image, u32 *fimage, struct code
PPC_BCC_SHORT(COND_NE, tmp_idx);

if (imm & BPF_FETCH) {
/* Emit 'sync' to enforce full ordering */
if (IS_ENABLED(CONFIG_SMP))
EMIT(PPC_RAW_SYNC());
EMIT(PPC_RAW_MR(ret_reg, _R0));
/*
* Skip unnecessary zero-extension for 32-bit cmpxchg.
Expand Down
4 changes: 2 additions & 2 deletions arch/powerpc/platforms/pseries/lparcfg.c
Original file line number Diff line number Diff line change
Expand Up @@ -371,8 +371,8 @@ static int read_dt_lpar_name(struct seq_file *m)

static void read_lpar_name(struct seq_file *m)
{
if (read_rtas_lpar_name(m) && read_dt_lpar_name(m))
pr_err_once("Error can't get the LPAR name");
if (read_rtas_lpar_name(m))
read_dt_lpar_name(m);
}

#define SPLPAR_MAXLENGTH 1026*(sizeof(char))
Expand Down
1 change: 1 addition & 0 deletions drivers/firewire/packet-serdes-test.c
Original file line number Diff line number Diff line change
Expand Up @@ -579,4 +579,5 @@ static struct kunit_suite packet_serdes_test_suite = {
};
kunit_test_suite(packet_serdes_test_suite);

MODULE_DESCRIPTION("FireWire packet serialization/deserialization unit test suite");
MODULE_LICENSE("GPL");
1 change: 1 addition & 0 deletions drivers/firewire/uapi-test.c
Original file line number Diff line number Diff line change
Expand Up @@ -86,4 +86,5 @@ static struct kunit_suite structure_layout_test_suite = {
};
kunit_test_suite(structure_layout_test_suite);

MODULE_DESCRIPTION("FireWire UAPI unit test suite");
MODULE_LICENSE("GPL");
2 changes: 1 addition & 1 deletion fs/smb/client/cifspdu.h
Original file line number Diff line number Diff line change
Expand Up @@ -2574,7 +2574,7 @@ typedef struct {


struct win_dev {
unsigned char type[8]; /* IntxCHR or IntxBLK or LnxFIFO*/
unsigned char type[8]; /* IntxCHR or IntxBLK or LnxFIFO or LnxSOCK */
__le64 major;
__le64 minor;
} __attribute__((packed));
Expand Down
4 changes: 4 additions & 0 deletions fs/smb/client/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -606,6 +606,10 @@ cifs_sfu_type(struct cifs_fattr *fattr, const char *path,
mnr = le64_to_cpu(*(__le64 *)(pbuf+16));
fattr->cf_rdev = MKDEV(mjr, mnr);
}
} else if (memcmp("LnxSOCK", pbuf, 8) == 0) {
cifs_dbg(FYI, "Socket\n");
fattr->cf_mode |= S_IFSOCK;
fattr->cf_dtype = DT_SOCK;
} else if (memcmp("IntxLNK", pbuf, 7) == 0) {
cifs_dbg(FYI, "Symlink\n");
fattr->cf_mode |= S_IFLNK;
Expand Down
3 changes: 3 additions & 0 deletions fs/smb/client/smb2ops.c
Original file line number Diff line number Diff line change
Expand Up @@ -4997,6 +4997,9 @@ static int __cifs_sfu_make_node(unsigned int xid, struct inode *inode,
pdev.major = cpu_to_le64(MAJOR(dev));
pdev.minor = cpu_to_le64(MINOR(dev));
break;
case S_IFSOCK:
strscpy(pdev.type, "LnxSOCK");
break;
case S_IFIFO:
strscpy(pdev.type, "LnxFIFO");
break;
Expand Down
1 change: 1 addition & 0 deletions fs/smb/common/cifs_arc4.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#include <linux/module.h>
#include "arc4.h"

MODULE_DESCRIPTION("ARC4 Cipher Algorithm");
MODULE_LICENSE("GPL");

int cifs_arc4_setkey(struct arc4_ctx *ctx, const u8 *in_key, unsigned int key_len)
Expand Down
1 change: 1 addition & 0 deletions fs/smb/common/cifs_md4.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
#include <asm/byteorder.h>
#include "md4.h"

MODULE_DESCRIPTION("MD4 Message Digest Algorithm (RFC1320)");
MODULE_LICENSE("GPL");

static inline u32 lshift(u32 x, unsigned int s)
Expand Down
6 changes: 2 additions & 4 deletions fs/xfs/libxfs/xfs_alloc.c
Original file line number Diff line number Diff line change
Expand Up @@ -1008,13 +1008,12 @@ xfs_alloc_cur_finish(
struct xfs_alloc_arg *args,
struct xfs_alloc_cur *acur)
{
struct xfs_agf __maybe_unused *agf = args->agbp->b_addr;
int error;

ASSERT(acur->cnt && acur->bnolt);
ASSERT(acur->bno >= acur->rec_bno);
ASSERT(acur->bno + acur->len <= acur->rec_bno + acur->rec_len);
ASSERT(acur->rec_bno + acur->rec_len <= be32_to_cpu(agf->agf_length));
ASSERT(xfs_verify_agbext(args->pag, acur->rec_bno, acur->rec_len));

error = xfs_alloc_fixup_trees(acur->cnt, acur->bnolt, acur->rec_bno,
acur->rec_len, acur->bno, acur->len, 0);
Expand Down Expand Up @@ -1217,7 +1216,6 @@ STATIC int /* error */
xfs_alloc_ag_vextent_exact(
xfs_alloc_arg_t *args) /* allocation argument structure */
{
struct xfs_agf __maybe_unused *agf = args->agbp->b_addr;
struct xfs_btree_cur *bno_cur;/* by block-number btree cursor */
struct xfs_btree_cur *cnt_cur;/* by count btree cursor */
int error;
Expand Down Expand Up @@ -1297,7 +1295,7 @@ xfs_alloc_ag_vextent_exact(
*/
cnt_cur = xfs_cntbt_init_cursor(args->mp, args->tp, args->agbp,
args->pag);
ASSERT(args->agbno + args->len <= be32_to_cpu(agf->agf_length));
ASSERT(xfs_verify_agbext(args->pag, args->agbno, args->len));
error = xfs_alloc_fixup_trees(cnt_cur, bno_cur, fbno, flen, args->agbno,
args->len, XFSA_FIXUP_BNO_OK);
if (error) {
Expand Down
40 changes: 19 additions & 21 deletions fs/xfs/libxfs/xfs_attr.c
Original file line number Diff line number Diff line change
Expand Up @@ -329,26 +329,20 @@ xfs_attr_calc_size(
return nblks;
}

/* Initialize transaction reservation for attr operations */
void
xfs_init_attr_trans(
struct xfs_da_args *args,
struct xfs_trans_res *tres,
unsigned int *total)
/* Initialize transaction reservation for an xattr set/replace/upsert */
inline struct xfs_trans_res
xfs_attr_set_resv(
const struct xfs_da_args *args)
{
struct xfs_mount *mp = args->dp->i_mount;

if (args->value) {
tres->tr_logres = M_RES(mp)->tr_attrsetm.tr_logres +
M_RES(mp)->tr_attrsetrt.tr_logres *
args->total;
tres->tr_logcount = XFS_ATTRSET_LOG_COUNT;
tres->tr_logflags = XFS_TRANS_PERM_LOG_RES;
*total = args->total;
} else {
*tres = M_RES(mp)->tr_attrrm;
*total = XFS_ATTRRM_SPACE_RES(mp);
}
struct xfs_mount *mp = args->dp->i_mount;
struct xfs_trans_res ret = {
.tr_logres = M_RES(mp)->tr_attrsetm.tr_logres +
M_RES(mp)->tr_attrsetrt.tr_logres * args->total,
.tr_logcount = XFS_ATTRSET_LOG_COUNT,
.tr_logflags = XFS_TRANS_PERM_LOG_RES,
};

return ret;
}

/*
Expand Down Expand Up @@ -1006,7 +1000,7 @@ xfs_attr_set(
struct xfs_trans_res tres;
int error, local;
int rmt_blks = 0;
unsigned int total;
unsigned int total = 0;

ASSERT(!args->trans);

Expand All @@ -1033,18 +1027,22 @@ xfs_attr_set(

if (!local)
rmt_blks = xfs_attr3_rmt_blocks(mp, args->valuelen);

tres = xfs_attr_set_resv(args);
total = args->total;
break;
case XFS_ATTRUPDATE_REMOVE:
XFS_STATS_INC(mp, xs_attr_remove);
rmt_blks = xfs_attr3_max_rmt_blocks(mp);
tres = M_RES(mp)->tr_attrrm;
total = XFS_ATTRRM_SPACE_RES(mp);
break;
}

/*
* Root fork attributes can use reserved data blocks for this
* operation if necessary
*/
xfs_init_attr_trans(args, &tres, &total);
error = xfs_trans_alloc_inode(dp, &tres, total, 0, rsvd, &args->trans);
if (error)
return error;
Expand Down
3 changes: 1 addition & 2 deletions fs/xfs/libxfs/xfs_attr.h
Original file line number Diff line number Diff line change
Expand Up @@ -565,8 +565,7 @@ bool xfs_attr_check_namespace(unsigned int attr_flags);
bool xfs_attr_namecheck(unsigned int attr_flags, const void *name,
size_t length);
int xfs_attr_calc_size(struct xfs_da_args *args, int *local);
void xfs_init_attr_trans(struct xfs_da_args *args, struct xfs_trans_res *tres,
unsigned int *total);
struct xfs_trans_res xfs_attr_set_resv(const struct xfs_da_args *args);

/*
* Check to see if the attr should be upgraded from non-existent or shortform to
Expand Down
1 change: 1 addition & 0 deletions fs/xfs/libxfs/xfs_bmap.c
Original file line number Diff line number Diff line change
Expand Up @@ -6383,6 +6383,7 @@ xfs_bunmapi_range(
error = xfs_defer_finish(tpp);
if (error)
goto out;
cond_resched();
}
out:
return error;
Expand Down
28 changes: 24 additions & 4 deletions fs/xfs/libxfs/xfs_inode_buf.c
Original file line number Diff line number Diff line change
Expand Up @@ -374,17 +374,37 @@ xfs_dinode_verify_fork(
/*
* For fork types that can contain local data, check that the fork
* format matches the size of local data contained within the fork.
*
* For all types, check that when the size says the should be in extent
* or btree format, the inode isn't claiming it is in local format.
*/
if (whichfork == XFS_DATA_FORK) {
if (S_ISDIR(mode) || S_ISLNK(mode)) {
/*
* A directory small enough to fit in the inode must be stored
* in local format. The directory sf <-> extents conversion
* code updates the directory size accordingly.
*/
if (S_ISDIR(mode)) {
if (be64_to_cpu(dip->di_size) <= fork_size &&
fork_format != XFS_DINODE_FMT_LOCAL)
return __this_address;
}

/*
* A symlink with a target small enough to fit in the inode can
* be stored in extents format if xattrs were added (thus
* converting the data fork from shortform to remote format)
* and then removed.
*/
if (S_ISLNK(mode)) {
if (be64_to_cpu(dip->di_size) <= fork_size &&
fork_format != XFS_DINODE_FMT_EXTENTS &&
fork_format != XFS_DINODE_FMT_LOCAL)
return __this_address;
}

/*
* For all types, check that when the size says the fork should
* be in extent or btree format, the inode isn't claiming to be
* in local format.
*/
if (be64_to_cpu(dip->di_size) > fork_size &&
fork_format == XFS_DINODE_FMT_LOCAL)
return __this_address;
Expand Down
2 changes: 1 addition & 1 deletion fs/xfs/scrub/scrub.c
Original file line number Diff line number Diff line change
Expand Up @@ -856,7 +856,7 @@ xfs_ioc_scrubv_metadata(
if (vec_bytes > PAGE_SIZE)
return -ENOMEM;

uvectors = (void __user *)(uintptr_t)head.svh_vectors;
uvectors = u64_to_user_ptr(head.svh_vectors);
vectors = memdup_user(uvectors, vec_bytes);
if (IS_ERR(vectors))
return PTR_ERR(vectors);
Expand Down
9 changes: 6 additions & 3 deletions fs/xfs/scrub/xfarray.c
Original file line number Diff line number Diff line change
Expand Up @@ -822,12 +822,14 @@ xfarray_sort_scan(

/* Grab the first folio that backs this array element. */
if (!si->folio) {
struct folio *folio;
loff_t next_pos;

si->folio = xfile_get_folio(si->array->xfile, idx_pos,
folio = xfile_get_folio(si->array->xfile, idx_pos,
si->array->obj_size, XFILE_ALLOC);
if (IS_ERR(si->folio))
return PTR_ERR(si->folio);
if (IS_ERR(folio))
return PTR_ERR(folio);
si->folio = folio;

si->first_folio_idx = xfarray_idx(si->array,
folio_pos(si->folio) + si->array->obj_size - 1);
Expand Down Expand Up @@ -1048,6 +1050,7 @@ xfarray_sort(

out_free:
trace_xfarray_sort_stats(si, error);
xfarray_sort_scan_done(si);
kvfree(si);
return error;
}
Expand Down
Loading