From 6565c27f0aee3dc4a3cc31e272d84736e8d4d68d Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Wed, 9 Jan 2019 20:41:47 +0100 Subject: [PATCH 01/32] nfsd: Add trace events for all v4 operations Add trace events to all v4 operations. Record client ip for ipv4 clients. Record uid from request credentials. For READ and WRITE ops, additionally record offset and length request arguments and device,inode and filename of the affected file. --- fs/nfsd/nfs4proc.c | 72 +++++++++++++++++++ fs/nfsd/nfs4state.c | 42 +++++++++++ fs/nfsd/trace.h | 169 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 283 insertions(+) diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c index b207c76a873f3..26270e061a654 100644 --- a/fs/nfsd/nfs4proc.c +++ b/fs/nfsd/nfs4proc.c @@ -371,6 +371,8 @@ nfsd4_open(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, struct nfsd_net *nn = net_generic(net, nfsd_net_id); bool reclaim = false; + trace_nfsd4_open(rqstp); + dprintk("NFSD: nfsd4_open filename %.*s op_openowner %p\n", (int)open->op_fnamelen, open->op_fname, open->op_openowner); @@ -506,6 +508,8 @@ static __be32 nfsd4_getfh(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, union nfsd4_op_u *u) { + trace_nfsd4_getfh(rqstp); + u->getfh = &cstate->current_fh; return nfs_ok; } @@ -517,6 +521,8 @@ nfsd4_putfh(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, struct nfsd4_putfh *putfh = &u->putfh; __be32 ret; + trace_nfsd4_putfh(rqstp); + fh_put(&cstate->current_fh); cstate->current_fh.fh_handle.fh_size = putfh->pf_fhlen; memcpy(&cstate->current_fh.fh_handle.fh_raw, putfh->pf_fhval, @@ -537,6 +543,8 @@ nfsd4_putrootfh(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, { __be32 status; + trace_nfsd4_putrootfh(rqstp); + fh_put(&cstate->current_fh); status = exp_pseudoroot(rqstp, &cstate->current_fh); return status; @@ -546,6 +554,8 @@ static __be32 nfsd4_restorefh(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, union nfsd4_op_u *u) { + trace_nfsd4_restorefh(rqstp); + if (!cstate->save_fh.fh_dentry) return nfserr_restorefh; @@ -561,6 +571,8 @@ static __be32 nfsd4_savefh(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, union nfsd4_op_u *u) { + trace_nfsd4_savefh(rqstp); + fh_dup2(&cstate->save_fh, &cstate->current_fh); if (HAS_CSTATE_FLAG(cstate, CURRENT_STATE_ID_FLAG)) { memcpy(&cstate->save_stateid, &cstate->current_stateid, sizeof(stateid_t)); @@ -579,6 +591,8 @@ nfsd4_access(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, struct nfsd4_access *access = &u->access; u32 access_full; + trace_nfsd4_access(rqstp); + access_full = NFS3_ACCESS_FULL; if (cstate->minorversion >= 2) access_full |= NFS4_ACCESS_XALIST | NFS4_ACCESS_XAREAD | @@ -607,6 +621,8 @@ nfsd4_commit(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, { struct nfsd4_commit *commit = &u->commit; + trace_nfsd4_commit(rqstp); + return nfsd_commit(rqstp, &cstate->current_fh, commit->co_offset, commit->co_count, (__be32 *)commit->co_verf.data); @@ -621,6 +637,8 @@ nfsd4_create(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, __be32 status; dev_t rdev; + trace_nfsd4_create(rqstp); + fh_init(&resfh, NFS4_FHSIZE); status = fh_verify(rqstp, &cstate->current_fh, S_IFDIR, NFSD_MAY_NOP); @@ -712,6 +730,8 @@ nfsd4_getattr(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, struct nfsd4_getattr *getattr = &u->getattr; __be32 status; + trace_nfsd4_getattr(rqstp); + status = fh_verify(rqstp, &cstate->current_fh, 0, NFSD_MAY_NOP); if (status) return status; @@ -734,6 +754,8 @@ nfsd4_link(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, struct nfsd4_link *link = &u->link; __be32 status; + trace_nfsd4_link(rqstp); + status = nfsd_link(rqstp, &cstate->current_fh, link->li_name, link->li_namelen, &cstate->save_fh); if (!status) @@ -762,6 +784,8 @@ static __be32 nfsd4_lookupp(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, union nfsd4_op_u *u) { + trace_nfsd4_lookupp(rqstp); + return nfsd4_do_lookupp(rqstp, &cstate->current_fh); } @@ -769,6 +793,8 @@ static __be32 nfsd4_lookup(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, union nfsd4_op_u *u) { + trace_nfsd4_lookup(rqstp); + return nfsd_lookup(rqstp, &cstate->current_fh, u->lookup.lo_name, u->lookup.lo_len, &cstate->current_fh); @@ -781,6 +807,8 @@ nfsd4_read(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, struct nfsd4_read *read = &u->read; __be32 status; + trace_nfsd4_read(rqstp,cstate,read); + read->rd_nf = NULL; trace_nfsd_read_start(rqstp, &cstate->current_fh, @@ -836,6 +864,8 @@ nfsd4_readdir(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, u64 cookie = readdir->rd_cookie; static const nfs4_verifier zeroverf; + trace_nfsd4_readdir(rqstp); + /* no need to check permission - this will be done in nfsd_readdir() */ if (readdir->rd_bmval[1] & NFSD_WRITEONLY_ATTRS_WORD1) @@ -858,6 +888,8 @@ static __be32 nfsd4_readlink(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, union nfsd4_op_u *u) { + trace_nfsd4_readlink(rqstp); + u->readlink.rl_rqstp = rqstp; u->readlink.rl_fhp = &cstate->current_fh; return nfs_ok; @@ -870,6 +902,8 @@ nfsd4_remove(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, struct nfsd4_remove *remove = &u->remove; __be32 status; + trace_nfsd4_remove(rqstp); + if (opens_in_grace(SVC_NET(rqstp))) return nfserr_grace; status = nfsd_unlink(rqstp, &cstate->current_fh, 0, @@ -888,6 +922,8 @@ nfsd4_rename(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, struct nfsd4_rename *rename = &u->rename; __be32 status; + trace_nfsd4_rename(rqstp); + if (opens_in_grace(SVC_NET(rqstp))) return nfserr_grace; status = nfsd_rename(rqstp, &cstate->save_fh, rename->rn_sname, @@ -909,6 +945,8 @@ nfsd4_secinfo(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, struct dentry *dentry; __be32 err; + trace_nfsd4_secinfo(rqstp); + err = fh_verify(rqstp, &cstate->current_fh, S_IFDIR, NFSD_MAY_EXEC); if (err) return err; @@ -936,6 +974,8 @@ nfsd4_secinfo_no_name(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstat { __be32 err; + trace_nfsd4_secinfo_no_name(rqstp); + switch (u->secinfo_no_name.sin_style) { case NFS4_SECINFO_STYLE4_CURRENT_FH: break; @@ -975,6 +1015,8 @@ nfsd4_setattr(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, __be32 status = nfs_ok; int err; + trace_nfsd4_setattr(rqstp); + if (setattr->sa_iattr.ia_valid & ATTR_SIZE) { status = nfs4_preprocess_stateid_op(rqstp, cstate, &cstate->current_fh, &setattr->sa_stateid, @@ -1022,6 +1064,8 @@ nfsd4_write(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, unsigned long cnt; int nvecs; + trace_nfsd4_write(rqstp,cstate,write); + if (write->wr_offset > (u64)OFFSET_MAX || write->wr_offset + write->wr_buflen > (u64)OFFSET_MAX) return nfserr_fbig; @@ -1101,6 +1145,8 @@ nfsd4_clone(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, struct nfsd_file *src, *dst; __be32 status; + trace_nfsd4_clone(rqstp); + status = nfsd4_verify_copy(rqstp, cstate, &clone->cl_src_stateid, &src, &clone->cl_dst_stateid, &dst); if (status) @@ -1661,6 +1707,8 @@ nfsd4_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, __be32 status; struct nfsd4_copy *async_copy = NULL; + trace_nfsd4_copy(rqstp); + if (!copy->cp_intra) { /* Inter server SSC */ if (!inter_copy_offload_enable || copy->cp_synchronous) { status = nfserr_notsupp; @@ -1742,6 +1790,8 @@ nfsd4_offload_cancel(struct svc_rqst *rqstp, struct nfsd4_copy *copy; struct nfs4_client *clp = cstate->clp; + trace_nfsd4_offload_cancel(rqstp); + copy = find_async_copy(clp, &os->stateid); if (!copy) { struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id); @@ -1764,6 +1814,8 @@ nfsd4_copy_notify(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, struct nfs4_cpntf_state *cps; struct nfs4_client *clp = cstate->clp; + trace_nfsd4_copy_notify(rqstp); + status = nfs4_preprocess_stateid_op(rqstp, cstate, &cstate->current_fh, &cn->cpn_src_stateid, RD_STATE, NULL, &stid); @@ -1829,6 +1881,8 @@ nfsd4_offload_status(struct svc_rqst *rqstp, struct nfsd4_copy *copy; struct nfs4_client *clp = cstate->clp; + trace_nfsd4_offload_status(rqstp); + copy = find_async_copy(clp, &os->stateid); if (copy) { os->count = copy->cp_res.wr_bytes_written; @@ -1843,6 +1897,8 @@ static __be32 nfsd4_allocate(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, union nfsd4_op_u *u) { + trace_nfsd4_allocate(rqstp); + return nfsd4_fallocate(rqstp, cstate, &u->allocate, 0); } @@ -1850,6 +1906,8 @@ static __be32 nfsd4_deallocate(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, union nfsd4_op_u *u) { + trace_nfsd4_deallocate(rqstp); + return nfsd4_fallocate(rqstp, cstate, &u->deallocate, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE); } @@ -1863,6 +1921,8 @@ nfsd4_seek(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, __be32 status; struct nfsd_file *nf; + trace_nfsd4_seek(rqstp); + status = nfs4_preprocess_stateid_op(rqstp, cstate, &cstate->current_fh, &seek->seek_stateid, RD_STATE, &nf, NULL); @@ -1967,6 +2027,8 @@ nfsd4_nverify(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, { __be32 status; + trace_nfsd4_nverify(rqstp); + status = _nfsd4_verify(rqstp, cstate, &u->verify); return status == nfserr_not_same ? nfs_ok : status; } @@ -1977,6 +2039,8 @@ nfsd4_verify(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, { __be32 status; + trace_nfsd4_verify(rqstp); + status = _nfsd4_verify(rqstp, cstate, &u->nverify); return status == nfserr_same ? nfs_ok : status; } @@ -2010,6 +2074,8 @@ nfsd4_getdeviceinfo(struct svc_rqst *rqstp, struct svc_export *exp; __be32 nfserr; + trace_nfsd4_getdeviceinfo(rqstp); + dprintk("%s: layout_type %u dev_id [0x%llx:0x%x] maxcnt %u\n", __func__, gdp->gd_layout_type, @@ -2063,6 +2129,8 @@ nfsd4_layoutget(struct svc_rqst *rqstp, __be32 nfserr; int accmode = NFSD_MAY_READ_IF_EXEC; + trace_nfsd4_layoutget(rqstp); + switch (lgp->lg_seg.iomode) { case IOMODE_READ: accmode |= NFSD_MAY_READ; @@ -2151,6 +2219,8 @@ nfsd4_layoutcommit(struct svc_rqst *rqstp, struct nfs4_layout_stateid *ls; __be32 nfserr; + trace_nfsd4_layoutcommit(rqstp); + nfserr = fh_verify(rqstp, current_fh, 0, NFSD_MAY_WRITE); if (nfserr) goto out; @@ -2210,6 +2280,8 @@ nfsd4_layoutreturn(struct svc_rqst *rqstp, struct svc_fh *current_fh = &cstate->current_fh; __be32 nfserr; + trace_nfsd4_layoutreturn(rqstp); + nfserr = fh_verify(rqstp, current_fh, 0, NFSD_MAY_NOP); if (nfserr) goto out; diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index 32063733443d4..37ad2b1bc5f49 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c @@ -3132,6 +3132,8 @@ nfsd4_exchange_id(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, bool update = exid->flags & EXCHGID4_FLAG_UPD_CONFIRMED_REC_A; struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id); + trace_nfsd4_exchange_id(rqstp); + rpc_ntop(sa, addr_str, sizeof(addr_str)); dprintk("%s rqstp=%p exid=%p clname.len=%u clname.data=%p " "ip_addr=%s flags %x, spa_how %u\n", @@ -3440,6 +3442,8 @@ nfsd4_create_session(struct svc_rqst *rqstp, __be32 status = 0; struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id); + trace_nfsd4_create_session(rqstp); + if (cr_ses->flags & ~SESSION4_FLAG_MASK_A) return nfserr_inval; status = nfsd4_check_cb_sec(&cr_ses->cb_sec); @@ -3567,6 +3571,8 @@ __be32 nfsd4_backchannel_ctl(struct svc_rqst *rqstp, struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id); __be32 status; + trace_nfsd4_backchannel_ctl(rqstp); + status = nfsd4_check_cb_sec(&bc->bc_cb_sec); if (status) return status; @@ -3632,6 +3638,8 @@ __be32 nfsd4_bind_conn_to_session(struct svc_rqst *rqstp, struct net *net = SVC_NET(rqstp); struct nfsd_net *nn = net_generic(net, nfsd_net_id); + trace_nfsd4_bind_conn_to_session(rqstp); + if (!nfsd4_last_compound_op(rqstp)) return nfserr_not_only_op; spin_lock(&nn->client_lock); @@ -3686,6 +3694,8 @@ nfsd4_destroy_session(struct svc_rqst *r, struct nfsd4_compound_state *cstate, struct net *net = SVC_NET(r); struct nfsd_net *nn = net_generic(net, nfsd_net_id); + trace_nfsd4_destroy_session(r); + status = nfserr_not_only_op; if (nfsd4_compound_in_session(cstate, sessionid)) { if (!nfsd4_last_compound_op(r)) @@ -3809,6 +3819,8 @@ nfsd4_sequence(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, struct net *net = SVC_NET(rqstp); struct nfsd_net *nn = net_generic(net, nfsd_net_id); + trace_nfsd4_sequence(rqstp); + if (resp->opcnt != 1) return nfserr_sequence_pos; @@ -3944,6 +3956,8 @@ nfsd4_destroy_clientid(struct svc_rqst *rqstp, __be32 status = 0; struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id); + trace_nfsd4_destroy_clientid(rqstp); + spin_lock(&nn->client_lock); unconf = find_unconfirmed_client(&dc->clientid, true, nn); conf = find_confirmed_client(&dc->clientid, true, nn); @@ -3986,6 +4000,8 @@ nfsd4_reclaim_complete(struct svc_rqst *rqstp, struct nfs4_client *clp = cstate->clp; __be32 status = 0; + trace_nfsd4_reclaim_complete(rqstp); + if (rc->rca_one_fs) { if (!cstate->current_fh.fh_dentry) return nfserr_nofilehandle; @@ -4031,6 +4047,8 @@ nfsd4_setclientid(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, __be32 status; struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id); + trace_nfsd4_setclientid(rqstp); + new = create_client(clname, rqstp, &clverifier); if (new == NULL) return nfserr_jukebox; @@ -4090,6 +4108,8 @@ nfsd4_setclientid_confirm(struct svc_rqst *rqstp, __be32 status; struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id); + trace_nfsd4_setclientid_confirm(rqstp); + if (STALE_CLIENTID(clid, nn)) return nfserr_stale_clientid; @@ -5449,6 +5469,8 @@ nfsd4_renew(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, __be32 status; struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id); + trace_nfsd4_renew(rqstp); + trace_nfsd_clid_renew(clid); status = set_client(clid, cstate, nn); if (status) @@ -6120,6 +6142,8 @@ nfsd4_test_stateid(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, struct nfsd4_test_stateid_id *stateid; struct nfs4_client *cl = cstate->clp; + trace_nfsd4_test_stateid(rqstp); + list_for_each_entry(stateid, &test_stateid->ts_stateid_list, ts_id_list) stateid->ts_id_status = nfsd4_validate_stateid(cl, &stateid->ts_id_stateid); @@ -6167,6 +6191,8 @@ nfsd4_free_stateid(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, struct nfs4_client *cl = cstate->clp; __be32 ret = nfserr_bad_stateid; + trace_nfsd4_free_stateid(rqstp); + spin_lock(&cl->cl_lock); s = find_stateid_locked(cl, stateid); if (!s) @@ -6293,6 +6319,8 @@ nfsd4_open_confirm(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, struct nfs4_ol_stateid *stp; struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id); + trace_nfsd4_open_confirm(rqstp); + dprintk("NFSD: nfsd4_open_confirm on file %pd\n", cstate->current_fh.fh_dentry); @@ -6359,6 +6387,8 @@ nfsd4_open_downgrade(struct svc_rqst *rqstp, struct nfs4_ol_stateid *stp; struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id); + trace_nfsd4_open_downgrade(rqstp); + dprintk("NFSD: nfsd4_open_downgrade on file %pd\n", cstate->current_fh.fh_dentry); @@ -6429,6 +6459,8 @@ nfsd4_close(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, struct net *net = SVC_NET(rqstp); struct nfsd_net *nn = net_generic(net, nfsd_net_id); + trace_nfsd4_close(rqstp); + dprintk("NFSD: nfsd4_close on file %pd\n", cstate->current_fh.fh_dentry); @@ -6479,6 +6511,8 @@ nfsd4_delegreturn(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, __be32 status; struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id); + trace_nfsd4_delegreturn(rqstp); + if ((status = fh_verify(rqstp, &cstate->current_fh, S_IFREG, 0))) return status; @@ -6869,6 +6903,8 @@ nfsd4_lock(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, struct net *net = SVC_NET(rqstp); struct nfsd_net *nn = net_generic(net, nfsd_net_id); + trace_nfsd4_lock(rqstp); + dprintk("NFSD: nfsd4_lock: start=%Ld length=%Ld\n", (long long) lock->lk_offset, (long long) lock->lk_length); @@ -7118,6 +7154,8 @@ nfsd4_lockt(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, __be32 status; struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id); + trace_nfsd4_lockt(rqstp); + if (locks_in_grace(SVC_NET(rqstp))) return nfserr_grace; @@ -7194,6 +7232,8 @@ nfsd4_locku(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, int err; struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id); + trace_nfsd4_locku(rqstp); + dprintk("NFSD: nfsd4_locku: start=%Ld length=%Ld\n", (long long) locku->lu_offset, (long long) locku->lu_length); @@ -7306,6 +7346,8 @@ nfsd4_release_lockowner(struct svc_rqst *rqstp, struct nfs4_client *clp; LIST_HEAD (reaplist); + trace_nfsd4_release_lockowner(rqstp); + dprintk("nfsd4_release_lockowner clientid: (%08x/%08x):\n", clid->cl_boot, clid->cl_id); diff --git a/fs/nfsd/trace.h b/fs/nfsd/trace.h index 5889db66409df..5b276665a0dd8 100644 --- a/fs/nfsd/trace.h +++ b/fs/nfsd/trace.h @@ -12,6 +12,7 @@ #include "export.h" #include "nfsfh.h" +#include "xdr4.h" #define NFSD_TRACE_PROC_ARG_FIELDS \ __field(unsigned int, netns_ino) \ @@ -1133,6 +1134,174 @@ TRACE_EVENT(nfsd_cb_offload, __entry->fh_hash, __entry->count, __entry->status) ); +TRACE_EVENT(nfsd4_read, + TP_PROTO( + struct svc_rqst *rqstp, + struct nfsd4_compound_state *cstate, + struct nfsd4_read *read + ), + TP_ARGS(rqstp,cstate,read), + TP_STRUCT__entry( + __field ( uint32_t , ipv4addr ) + __field ( uid_t , uid ) + __field ( dev_t , dev ) + __field ( unsigned long , ino ) + __field ( u64 , offset ) + __field ( u32 , length ) + __dynamic_array ( char , name , strlen(cstate->current_fh.fh_dentry->d_name.name)+1 ) + ), + TP_fast_assign( + struct dentry *dentry = cstate->current_fh.fh_dentry; + __entry->ipv4addr = rqstp->rq_addr.ss_family == AF_INET ? ((struct sockaddr_in *)&rqstp->rq_addr)->sin_addr.s_addr : 0; + __entry->uid=rqstp->rq_cred.cr_uid.val; + if (dentry->d_inode) { + __entry->ino = dentry->d_inode->i_ino; + __entry->dev = dentry->d_inode->i_sb->s_dev; + } else { + __entry->ino=0; + __entry->dev=0; + } + strcpy(__get_str(name),dentry->d_name.name); + __entry->offset=read->rd_offset; + __entry->length=read->rd_length; + ), + TP_printk("ip=0x%08x uid=%u dev=%u inode=%lu offset=%llu length=%u name=\"%s\"", + __entry->ipv4addr,__entry->uid, + __entry->dev,__entry->ino, + __entry->offset,__entry->length, + __get_str(name) + ) +) + +TRACE_EVENT(nfsd4_write, + TP_PROTO( + struct svc_rqst *rqstp, + struct nfsd4_compound_state *cstate, + struct nfsd4_write *write + ), + TP_ARGS(rqstp,cstate,write), + TP_STRUCT__entry( + __field ( uint32_t , ipv4addr ) + __field ( uid_t , uid ) + __field ( dev_t , dev ) + __field ( unsigned long , ino ) + __field ( u64 , offset ) + __field ( u32 , length ) + __dynamic_array ( char , name , strlen(cstate->current_fh.fh_dentry->d_name.name)+1 ) + ), + TP_fast_assign( + struct dentry *dentry = cstate->current_fh.fh_dentry; + __entry->ipv4addr = rqstp->rq_addr.ss_family == AF_INET ? ((struct sockaddr_in *)&rqstp->rq_addr)->sin_addr.s_addr : 0; + __entry->uid=rqstp->rq_cred.cr_uid.val; + if (dentry->d_inode) { + __entry->ino = dentry->d_inode->i_ino; + __entry->dev = dentry->d_inode->i_sb->s_dev; + } else { + __entry->ino=0; + __entry->dev=0; + } + strcpy(__get_str(name),dentry->d_name.name); + __entry->offset=write->wr_offset; + __entry->length=write->wr_buflen; + ), + TP_printk("ip=0x%08x uid=%u dev=%u inode=%lu offset=%llu length=%u name=\"%s\"", + __entry->ipv4addr,__entry->uid, + __entry->dev,__entry->ino, + __entry->offset,__entry->length, + __get_str(name) + ) +) + +DECLARE_EVENT_CLASS(nfsd4_op_class, + TP_PROTO(struct svc_rqst *rqstp), + TP_ARGS(rqstp), + TP_STRUCT__entry( + __field( uint32_t, ipv4addr ) + __field( uid_t, uid ) + ), + TP_fast_assign( + __entry->ipv4addr = rqstp->rq_addr.ss_family == AF_INET ? ((struct sockaddr_in *)&rqstp->rq_addr)->sin_addr.s_addr : 0; + __entry->uid=rqstp->rq_cred.cr_uid.val; + ), + TP_printk("ip=0x%08x uid=%u", + __entry->ipv4addr,__entry->uid + ) +) + +/* operations defined in nfs4proc.c : nfsd4_operation nfsd4_ops[] */ + +DEFINE_EVENT(nfsd4_op_class,nfsd4_access,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_close,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_commit,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_create,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_delegreturn,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_getattr,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_getfh,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_link,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_lock,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_lockt,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_locku,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_lookup,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_lookupp,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_nverify,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_open,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_open_confirm,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_open_downgrade,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_putfh,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +/* PUTPUBFH omitted - currently uses nfsd4_putrootfh op funtion */ +DEFINE_EVENT(nfsd4_op_class,nfsd4_putrootfh,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +/* READ omitted - defined above */ +DEFINE_EVENT(nfsd4_op_class,nfsd4_readdir,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_readlink,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_remove,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_rename,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_renew,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_restorefh,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_savefh,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_secinfo,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_setattr,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_setclientid,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_setclientid_confirm,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_verify,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +/* WRITE omitted - defined above */ +DEFINE_EVENT(nfsd4_op_class,nfsd4_release_lockowner,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); + +/* NFSv4.1 operations */ + +DEFINE_EVENT(nfsd4_op_class,nfsd4_exchange_id,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_backchannel_ctl,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_bind_conn_to_session,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_create_session,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_destroy_session,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_sequence,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_destroy_clientid,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_reclaim_complete,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_secinfo_no_name,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_test_stateid,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_free_stateid,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +#ifdef CONFIG_NFSD_PNFS +DEFINE_EVENT(nfsd4_op_class,nfsd4_getdeviceinfo,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_layoutget,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_layoutcommit,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_layoutreturn,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +#endif /* CONFIG_NFSD_PNFS */ + +/* NFSv4.2 operations */ + +DEFINE_EVENT(nfsd4_op_class,nfsd4_allocate,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_deallocate,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_clone,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_copy,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +/* READ_PLUS omitted - currently uses nfsd4_read op funtion */ +DEFINE_EVENT(nfsd4_op_class,nfsd4_seek,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_offload_status,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_offload_cancel,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_copy_notify,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_getxattr,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_setxattr,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_listxattr,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); +DEFINE_EVENT(nfsd4_op_class,nfsd4_removexattr,TP_PROTO(struct svc_rqst *rqstp),TP_ARGS(rqstp)); + #endif /* _NFSD_TRACE_H */ #undef TRACE_INCLUDE_PATH From 10647e396cc6d150ad6c321864cb99f2af6adc99 Mon Sep 17 00:00:00 2001 From: Paul Menzel Date: Fri, 24 Jan 2020 15:08:16 +0100 Subject: [PATCH 02/32] kernel/rcu: Print out more information when NMI stall cf: Re: `rcu: INFO: rcu_sched detected stalls on CPUs/tasks` on AMD EPYC server > Huh. Neither CPU 30 nor CPU 94 responded to the NMI. This usually means > that either NMIs aren't working or that the target CPUs are so deeply > in trouble that they cannot respond to NMIs. One historic reason that > the CPUs could be so deeply in trouble would be if the stack pointer > started referencing unmapped memory, but I have no idea whether that > applies to your particular CPUs. > > For whatever it is worth, the most extreme case of a CPU being in trouble > was once long ago when the CPU simply failstopped, so that it was no > longer executing instructions at all. > > On trick that might (or might not) get you more information is to force > RCU to dump the stack remotely instead of sending NMIs. Here is an > (untested) patch that should do the trick: Even on Ryzen: May 11 20:20:27 hypnotoad.molgen.mpg.de kernel: rcu: INFO: rcu_sched detected stalls on CPUs/tasks: May 11 20:20:27 hypnotoad.molgen.mpg.de kernel: rcu: 2-...0: (1 GPs behind) idle=c42/1/0x4000000000000000 softirq=404950836/404950839 fqs=14409 May 11 20:20:27 hypnotoad.molgen.mpg.de kernel: rcu: 3-...0: (1 GPs behind) idle=ce2/1/0x4000000000000000 softirq=407773923/407773926 fqs=14409 May 11 20:20:27 hypnotoad.molgen.mpg.de kernel: (detected by 5, t=60003 jiffies, g=239480749, q=1374055) May 11 20:20:27 hypnotoad.molgen.mpg.de kernel: Sending NMI from CPU 5 to CPUs 2: May 11 20:20:27 hypnotoad.molgen.mpg.de kernel: Sending NMI from CPU 5 to CPUs 3: May 11 20:20:27 hypnotoad.molgen.mpg.de kernel: rcu: rcu_sched kthread starved for 20005 jiffies! g239480749 f0x0 RCU_GP_DOING_FQS(6) ->state=0x0 ->cp May 11 20:20:27 hypnotoad.molgen.mpg.de kernel: rcu: RCU grace-period kthread stack dump: May 11 20:20:27 hypnotoad.molgen.mpg.de kernel: rcu_sched I 0 11 2 0x80004000 May 11 20:20:27 hypnotoad.molgen.mpg.de kernel: Call Trace: May 11 20:20:27 hypnotoad.molgen.mpg.de kernel: ? __schedule+0x223/0x6c0 May 11 20:20:27 hypnotoad.molgen.mpg.de kernel: ? __switch_to_asm+0x40/0x70 May 11 20:20:27 hypnotoad.molgen.mpg.de kernel: schedule+0x40/0xb0 May 11 20:20:27 hypnotoad.molgen.mpg.de kernel: schedule_timeout+0x171/0x300 May 11 20:20:27 hypnotoad.molgen.mpg.de kernel: ? __next_timer_interrupt+0xc0/0xc0 May 11 20:20:27 hypnotoad.molgen.mpg.de kernel: rcu_gp_kthread+0x6e4/0xf80 May 11 20:20:27 hypnotoad.molgen.mpg.de kernel: ? __schedule+0x22b/0x6c0 May 11 20:20:27 hypnotoad.molgen.mpg.de kernel: ? call_rcu+0x2f0/0x2f0 May 11 20:20:27 hypnotoad.molgen.mpg.de kernel: kthread+0x117/0x130 May 11 20:20:27 hypnotoad.molgen.mpg.de kernel: ? kthread_create_worker_on_cpu+0x70/0x70 May 11 20:20:27 hypnotoad.molgen.mpg.de kernel: ret_from_fork+0x22/0x40 Suggested-by: Paul E. McKenney --- kernel/rcu/tree_stall.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/rcu/tree_stall.h b/kernel/rcu/tree_stall.h index 21bebf7c9030b..aea6a1aacee4f 100644 --- a/kernel/rcu/tree_stall.h +++ b/kernel/rcu/tree_stall.h @@ -340,7 +340,7 @@ static void rcu_dump_cpu_stacks(void) if (rnp->qsmask & leaf_node_cpu_bit(rnp, cpu)) { if (cpu_is_offline(cpu)) pr_err("Offline CPU %d blocking current GP.\n", cpu); - else if (!trigger_single_cpu_backtrace(cpu)) + else dump_cpu_task(cpu); } raw_spin_unlock_irqrestore_rcu_node(rnp, flags); From 6793a66734e03c68715fb627db50da4cdcc36e79 Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Tue, 9 Mar 2021 10:38:38 +0100 Subject: [PATCH 03/32] md: Avoid sync_action sync->idle transition deadlock When a mdraid recovery/check is paused by writing "idle" to sync_action, sometimes the system deadlocks [1]. The latest fix proposed by the maintainer is not valid [2]. Use the fix we proposed ourself [3] until upstream comes up with something better. [1]: https://lore.kernel.org/linux-raid/5ed54ffc-ce82-bf66-4eff-390cb23bc1ac@molgen.mpg.de/T/#m28b00fdf4749f55c83282b20485c554ec199a108 [2]: https://lore.kernel.org/linux-raid/7fdb9726-4b1f-e04c-2451-f47139ddc05b@cloud.ionos.com/T/#m78c755f6b43a9c06d2c85b9d4e49c19657ddb155 [3]: https://lore.kernel.org/linux-raid/5ed54ffc-ce82-bf66-4eff-390cb23bc1ac@molgen.mpg.de/T/#m8a1d4c25781b8c3032ef38e3ffec425714515a16 --- drivers/md/md.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/md/md.c b/drivers/md/md.c index 4d38bd7dadd60..16b5768ba3303 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c @@ -4840,12 +4840,14 @@ action_store(struct mddev *mddev, const char *page, size_t len) clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery); if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery) && mddev_lock(mddev) == 0) { + set_bit(MD_ALLOW_SB_UPDATE, &mddev->flags); if (work_pending(&mddev->del_work)) flush_workqueue(md_misc_wq); if (mddev->sync_thread) { set_bit(MD_RECOVERY_INTR, &mddev->recovery); md_reap_sync_thread(mddev); } + clear_bit(MD_ALLOW_SB_UPDATE, &mddev->flags); mddev_unlock(mddev); } } else if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery)) From 82d1bbe15b77fe69b81169ad1c2b623c20e9df1f Mon Sep 17 00:00:00 2001 From: Thomas Kreitler Date: Tue, 16 Nov 2021 12:19:33 +0100 Subject: [PATCH 04/32] mount: Remove warning for impending timestamp expiry Take out this, this hmm, well say 'officious' warning about timestamp expiry in 2038. A nicer approach would be to make it configurable via kernel_config Basically this reverts http://lkml.iu.edu/hypermail/linux/kernel/1908.2/01441.html --- fs/namespace.c | 27 --------------------------- 1 file changed, 27 deletions(-) diff --git a/fs/namespace.c b/fs/namespace.c index de6fae84f1a1a..1e68b7b735af3 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -2592,27 +2592,6 @@ static void set_mount_attributes(struct mount *mnt, unsigned int mnt_flags) touch_mnt_namespace(mnt->mnt_ns); } -static void mnt_warn_timestamp_expiry(struct path *mountpoint, struct vfsmount *mnt) -{ - struct super_block *sb = mnt->mnt_sb; - - if (!__mnt_is_readonly(mnt) && - (ktime_get_real_seconds() + TIME_UPTIME_SEC_MAX > sb->s_time_max)) { - char *buf = (char *)__get_free_page(GFP_KERNEL); - char *mntpath = buf ? d_path(mountpoint, buf, PAGE_SIZE) : ERR_PTR(-ENOMEM); - struct tm tm; - - time64_to_tm(sb->s_time_max, 0, &tm); - - pr_warn("%s filesystem being %s at %s supports timestamps until %04ld (0x%llx)\n", - sb->s_type->name, - is_mounted(mnt) ? "remounted" : "mounted", - mntpath, - tm.tm_year+1900, (unsigned long long)sb->s_time_max); - - free_page((unsigned long)buf); - } -} /* * Handle reconfiguration of the mountpoint only without alteration of the @@ -2646,8 +2625,6 @@ static int do_reconfigure_mnt(struct path *path, unsigned int mnt_flags) unlock_mount_hash(); up_read(&sb->s_umount); - mnt_warn_timestamp_expiry(path, &mnt->mnt); - return ret; } @@ -2693,8 +2670,6 @@ static int do_remount(struct path *path, int ms_flags, int sb_flags, up_write(&sb->s_umount); } - mnt_warn_timestamp_expiry(path, &mnt->mnt); - put_fs_context(fc); return err; } @@ -2962,8 +2937,6 @@ static int do_new_mount_fc(struct fs_context *fc, struct path *mountpoint, if (IS_ERR(mnt)) return PTR_ERR(mnt); - mnt_warn_timestamp_expiry(mountpoint, mnt); - mp = lock_mount(mountpoint); if (IS_ERR(mp)) { mntput(mnt); From f0350ea9c9f881d2c12efec2588ed59c3208aa05 Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Mon, 17 Jan 2022 17:04:03 +0100 Subject: [PATCH 05/32] ext4: Reduce "mounted" log from INFO to DEBUG This is a MPI specific adjustment. We currently do a lot of ext4 mounts, because we mount inidivdual ext4 filesystems as a tmpdir for each job in the cluster. So we have a lot of these messages in the logs: [2748664.200013] EXT4-fs (loop0): mounted filesystem without journal. Opts: (null) [2748709.929436] EXT4-fs (loop1): mounted filesystem without journal. Opts: (null) [2748732.185899] EXT4-fs (loop0): mounted filesystem without journal. Opts: (null) Avoid log spam by reducing the log level of the message from INFO to DEBUG. --- fs/ext4/super.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/ext4/super.c b/fs/ext4/super.c index c5021ca0a28ad..ae0fd539779b8 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c @@ -5566,7 +5566,7 @@ static int ext4_fill_super(struct super_block *sb, struct fs_context *fc) descr = "out journal"; if (___ratelimit(&ext4_mount_msg_ratelimit, "EXT4-fs mount")) - ext4_msg(sb, KERN_INFO, "mounted filesystem with%s. " + ext4_msg(sb, KERN_DEBUG, "mounted filesystem with%s. " "Quota mode: %s.", descr, ext4_quota_mode(sb)); return 0; From 815fb34f0ed98f48fcfb02d6d552ea4ce4a07e49 Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Fri, 25 Feb 2022 14:21:34 +0100 Subject: [PATCH 06/32] config-mpi: Add --- config-mpi | 848 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 848 insertions(+) create mode 100644 config-mpi diff --git a/config-mpi b/config-mpi new file mode 100644 index 0000000000000..49adf0b8d522e --- /dev/null +++ b/config-mpi @@ -0,0 +1,848 @@ +CONFIG_LOCALVERSION=".mx64.428" +CONFIG_KERNEL_LZ4=y +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_AUDIT=y +CONFIG_NO_HZ_IDLE=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_BPF_SYSCALL=y +# CONFIG_BPF_UNPRIV_DEFAULT_OFF is not set +CONFIG_PREEMPT_VOLUNTARY=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y +CONFIG_TASKSTATS=y +CONFIG_TASK_DELAY_ACCT=y +CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y +CONFIG_PSI=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_IKHEADERS=m +CONFIG_LOG_BUF_SHIFT=19 +CONFIG_NUMA_BALANCING=y +# CONFIG_NUMA_BALANCING_DEFAULT_ENABLED is not set +CONFIG_CGROUPS=y +CONFIG_MEMCG=y +CONFIG_BLK_CGROUP=y +CONFIG_CGROUP_SCHED=y +CONFIG_CFS_BANDWIDTH=y +CONFIG_RT_GROUP_SCHED=y +CONFIG_CGROUP_PIDS=y +CONFIG_CGROUP_FREEZER=y +CONFIG_CGROUP_HUGETLB=y +CONFIG_CPUSETS=y +CONFIG_CGROUP_DEVICE=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_CGROUP_PERF=y +CONFIG_CGROUP_BPF=y +CONFIG_CGROUP_DEBUG=y +CONFIG_USER_NS=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_SLAB=y +CONFIG_SMP=y +CONFIG_X86_X2APIC=y +CONFIG_GART_IOMMU=y +CONFIG_NR_CPUS=256 +CONFIG_X86_MCELOG_LEGACY=y +CONFIG_MICROCODE_AMD=y +CONFIG_X86_MSR=m +CONFIG_X86_CPUID=m +CONFIG_NUMA=y +CONFIG_EFI=y +CONFIG_HZ_1000=y +CONFIG_KEXEC=y +CONFIG_KEXEC_FILE=y +CONFIG_CRASH_DUMP=y +# CONFIG_RANDOMIZE_BASE is not set +CONFIG_PHYSICAL_ALIGN=0x1000000 +CONFIG_COMPAT_VDSO=y +# CONFIG_ACPI_AC is not set +# CONFIG_ACPI_BATTERY is not set +CONFIG_ACPI_DOCK=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=m +CONFIG_X86_ACPI_CPUFREQ=m +# CONFIG_X86_ACPI_CPUFREQ_CPB is not set +CONFIG_IA32_EMULATION=y +CONFIG_KVM=m +CONFIG_KVM_INTEL=m +CONFIG_KVM_AMD=m +CONFIG_KPROBES=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +CONFIG_MODVERSIONS=y +CONFIG_BLK_DEV_INTEGRITY=y +CONFIG_BLK_DEV_THROTTLING=y +CONFIG_BLK_CGROUP_IOCOST=y +CONFIG_PARTITION_ADVANCED=y +CONFIG_MAC_PARTITION=y +CONFIG_BSD_DISKLABEL=y +CONFIG_LDM_PARTITION=y +CONFIG_IOSCHED_BFQ=y +CONFIG_BFQ_GROUP_IOSCHED=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_BINFMT_MISC=y +CONFIG_MEMORY_HOTPLUG=y +CONFIG_MEMORY_HOTREMOVE=y +CONFIG_TRANSPARENT_HUGEPAGE=y +CONFIG_ZSWAP=y +CONFIG_ZONE_DEVICE=y +CONFIG_NET=y +CONFIG_PACKET=m +CONFIG_PACKET_DIAG=m +CONFIG_UNIX=m +CONFIG_UNIX_DIAG=m +CONFIG_XFRM_USER=m +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_FIB_TRIE_STATS=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_VERBOSE=y +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE_DEMUX=m +CONFIG_NET_IPGRE=m +CONFIG_NET_IPGRE_BROADCAST=y +CONFIG_IP_MROUTE=y +CONFIG_IP_MROUTE_MULTIPLE_TABLES=y +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y +CONFIG_NET_IPVTI=m +CONFIG_NET_FOU_IP_TUNNELS=y +CONFIG_INET_AH=m +CONFIG_INET_ESP=m +CONFIG_INET_IPCOMP=m +CONFIG_INET_DIAG=m +CONFIG_INET_UDP_DIAG=m +CONFIG_INET_RAW_DIAG=m +CONFIG_INET_DIAG_DESTROY=y +CONFIG_TCP_CONG_ADVANCED=y +CONFIG_TCP_CONG_HSTCP=m +CONFIG_TCP_CONG_HYBLA=m +CONFIG_TCP_CONG_SCALABLE=m +CONFIG_TCP_CONG_LP=m +CONFIG_TCP_CONG_VENO=m +CONFIG_TCP_CONG_YEAH=m +CONFIG_TCP_CONG_ILLINOIS=m +CONFIG_TCP_CONG_DCTCP=m +CONFIG_TCP_CONG_CDG=m +CONFIG_TCP_MD5SIG=y +CONFIG_IPV6=m +CONFIG_IPV6_ROUTER_PREF=y +CONFIG_IPV6_ROUTE_INFO=y +CONFIG_IPV6_OPTIMISTIC_DAD=y +CONFIG_INET6_AH=m +CONFIG_INET6_ESP=m +CONFIG_INET6_IPCOMP=m +CONFIG_IPV6_MIP6=m +CONFIG_IPV6_ILA=m +CONFIG_IPV6_VTI=m +CONFIG_IPV6_SIT_6RD=y +CONFIG_IPV6_GRE=m +CONFIG_IPV6_MULTIPLE_TABLES=y +CONFIG_IPV6_SUBTREES=y +CONFIG_IPV6_MROUTE=y +CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y +CONFIG_IPV6_PIMSM_V2=y +CONFIG_NETFILTER=y +CONFIG_NF_CONNTRACK=m +CONFIG_NF_CONNTRACK_ZONES=y +CONFIG_NF_CONNTRACK_EVENTS=y +CONFIG_NF_CONNTRACK_TIMEOUT=y +CONFIG_NF_CONNTRACK_TIMESTAMP=y +CONFIG_NF_CONNTRACK_AMANDA=m +CONFIG_NF_CONNTRACK_FTP=m +CONFIG_NF_CONNTRACK_H323=m +CONFIG_NF_CONNTRACK_IRC=m +CONFIG_NF_CONNTRACK_NETBIOS_NS=m +CONFIG_NF_CONNTRACK_SNMP=m +CONFIG_NF_CONNTRACK_PPTP=m +CONFIG_NF_CONNTRACK_SANE=m +CONFIG_NF_CONNTRACK_SIP=m +CONFIG_NF_CONNTRACK_TFTP=m +CONFIG_NF_CT_NETLINK=m +CONFIG_NF_CT_NETLINK_TIMEOUT=m +CONFIG_NF_CT_NETLINK_HELPER=m +CONFIG_NETFILTER_NETLINK_GLUE_CT=y +CONFIG_NF_TABLES=m +CONFIG_NF_TABLES_INET=y +CONFIG_NF_TABLES_NETDEV=y +CONFIG_NFT_NUMGEN=m +CONFIG_NFT_CT=m +CONFIG_NFT_FLOW_OFFLOAD=m +CONFIG_NFT_CONNLIMIT=m +CONFIG_NFT_LOG=m +CONFIG_NFT_LIMIT=m +CONFIG_NFT_MASQ=m +CONFIG_NFT_REDIR=m +CONFIG_NFT_NAT=m +CONFIG_NFT_TUNNEL=m +CONFIG_NFT_OBJREF=m +CONFIG_NFT_QUEUE=m +CONFIG_NFT_QUOTA=m +CONFIG_NFT_REJECT=m +CONFIG_NFT_COMPAT=m +CONFIG_NFT_HASH=m +CONFIG_NFT_FIB_INET=m +CONFIG_NFT_SOCKET=m +CONFIG_NFT_OSF=m +CONFIG_NFT_TPROXY=m +CONFIG_NFT_DUP_NETDEV=m +CONFIG_NFT_FWD_NETDEV=m +CONFIG_NFT_FIB_NETDEV=m +CONFIG_NF_FLOW_TABLE_INET=m +CONFIG_NF_FLOW_TABLE=m +CONFIG_NETFILTER_XT_SET=m +CONFIG_NETFILTER_XT_TARGET_AUDIT=m +CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m +CONFIG_NETFILTER_XT_TARGET_DSCP=m +CONFIG_NETFILTER_XT_TARGET_HMARK=m +CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m +CONFIG_NETFILTER_XT_TARGET_LOG=m +CONFIG_NETFILTER_XT_TARGET_MARK=m +CONFIG_NETFILTER_XT_TARGET_NFLOG=m +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m +CONFIG_NETFILTER_XT_TARGET_NOTRACK=m +CONFIG_NETFILTER_XT_TARGET_TEE=m +CONFIG_NETFILTER_XT_TARGET_TPROXY=m +CONFIG_NETFILTER_XT_TARGET_TRACE=m +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m +CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m +CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m +CONFIG_NETFILTER_XT_MATCH_BPF=m +CONFIG_NETFILTER_XT_MATCH_CGROUP=m +CONFIG_NETFILTER_XT_MATCH_CLUSTER=m +CONFIG_NETFILTER_XT_MATCH_COMMENT=m +CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m +CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m +CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m +CONFIG_NETFILTER_XT_MATCH_CONNMARK=m +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m +CONFIG_NETFILTER_XT_MATCH_CPU=m +CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m +CONFIG_NETFILTER_XT_MATCH_DSCP=m +CONFIG_NETFILTER_XT_MATCH_ESP=m +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m +CONFIG_NETFILTER_XT_MATCH_HELPER=m +CONFIG_NETFILTER_XT_MATCH_IPCOMP=m +CONFIG_NETFILTER_XT_MATCH_IPRANGE=m +CONFIG_NETFILTER_XT_MATCH_IPVS=m +CONFIG_NETFILTER_XT_MATCH_LENGTH=m +CONFIG_NETFILTER_XT_MATCH_LIMIT=m +CONFIG_NETFILTER_XT_MATCH_MAC=m +CONFIG_NETFILTER_XT_MATCH_MARK=m +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m +CONFIG_NETFILTER_XT_MATCH_NFACCT=m +CONFIG_NETFILTER_XT_MATCH_OSF=m +CONFIG_NETFILTER_XT_MATCH_OWNER=m +CONFIG_NETFILTER_XT_MATCH_POLICY=m +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m +CONFIG_NETFILTER_XT_MATCH_QUOTA=m +CONFIG_NETFILTER_XT_MATCH_RATEEST=m +CONFIG_NETFILTER_XT_MATCH_REALM=m +CONFIG_NETFILTER_XT_MATCH_RECENT=m +CONFIG_NETFILTER_XT_MATCH_SOCKET=m +CONFIG_NETFILTER_XT_MATCH_STATE=m +CONFIG_NETFILTER_XT_MATCH_STATISTIC=m +CONFIG_NETFILTER_XT_MATCH_STRING=m +CONFIG_NETFILTER_XT_MATCH_TCPMSS=m +CONFIG_NETFILTER_XT_MATCH_TIME=m +CONFIG_NETFILTER_XT_MATCH_U32=m +CONFIG_IP_SET=m +CONFIG_IP_SET_BITMAP_IP=m +CONFIG_IP_SET_BITMAP_IPMAC=m +CONFIG_IP_SET_BITMAP_PORT=m +CONFIG_IP_SET_HASH_IP=m +CONFIG_IP_SET_HASH_IPMARK=m +CONFIG_IP_SET_HASH_IPPORT=m +CONFIG_IP_SET_HASH_IPPORTIP=m +CONFIG_IP_SET_HASH_IPPORTNET=m +CONFIG_IP_SET_HASH_MAC=m +CONFIG_IP_SET_HASH_NETPORTNET=m +CONFIG_IP_SET_HASH_NET=m +CONFIG_IP_SET_HASH_NETNET=m +CONFIG_IP_SET_HASH_NETPORT=m +CONFIG_IP_SET_HASH_NETIFACE=m +CONFIG_IP_SET_LIST_SET=m +CONFIG_IP_VS=m +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_NFCT=y +CONFIG_NFT_DUP_IPV4=m +CONFIG_NFT_FIB_IPV4=m +CONFIG_NF_TABLES_ARP=y +CONFIG_NF_LOG_ARP=m +CONFIG_NF_LOG_IPV4=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MATCH_AH=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_RPFILTER=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_SYNPROXY=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_CLUSTERIP=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARP_MANGLE=m +CONFIG_NFT_DUP_IPV6=m +CONFIG_NFT_FIB_IPV6=m +CONFIG_IP6_NF_IPTABLES=m +CONFIG_IP6_NF_MATCH_AH=m +CONFIG_IP6_NF_MATCH_EUI64=m +CONFIG_IP6_NF_MATCH_FRAG=m +CONFIG_IP6_NF_MATCH_OPTS=m +CONFIG_IP6_NF_MATCH_HL=m +CONFIG_IP6_NF_MATCH_IPV6HEADER=m +CONFIG_IP6_NF_MATCH_MH=m +CONFIG_IP6_NF_MATCH_RPFILTER=m +CONFIG_IP6_NF_MATCH_RT=m +CONFIG_IP6_NF_MATCH_SRH=m +CONFIG_IP6_NF_TARGET_HL=m +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_TARGET_REJECT=m +CONFIG_IP6_NF_TARGET_SYNPROXY=m +CONFIG_IP6_NF_MANGLE=m +CONFIG_IP6_NF_RAW=m +CONFIG_IP6_NF_NAT=m +CONFIG_IP6_NF_TARGET_MASQUERADE=m +CONFIG_IP6_NF_TARGET_NPT=m +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_IP_DCCP=m +CONFIG_RDS=m +CONFIG_RDS_TCP=m +CONFIG_TIPC=m +CONFIG_L2TP=m +CONFIG_L2TP_V3=y +CONFIG_L2TP_IP=m +CONFIG_L2TP_ETH=m +CONFIG_BRIDGE=m +CONFIG_BRIDGE_VLAN_FILTERING=y +CONFIG_VLAN_8021Q=m +CONFIG_VLAN_8021Q_GVRP=y +CONFIG_VLAN_8021Q_MVRP=y +CONFIG_NET_SCHED=y +CONFIG_NET_SCH_CBQ=m +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_HFSC=m +CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_MULTIQ=m +CONFIG_NET_SCH_RED=m +CONFIG_NET_SCH_SFB=m +CONFIG_NET_SCH_SFQ=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_SCH_TBF=m +CONFIG_NET_SCH_GRED=m +CONFIG_NET_SCH_DSMARK=m +CONFIG_NET_SCH_NETEM=m +CONFIG_NET_SCH_DRR=m +CONFIG_NET_SCH_MQPRIO=m +CONFIG_NET_SCH_CHOKE=m +CONFIG_NET_SCH_QFQ=m +CONFIG_NET_SCH_CODEL=m +CONFIG_NET_SCH_FQ_CODEL=m +CONFIG_NET_SCH_FQ=m +CONFIG_NET_SCH_HHF=m +CONFIG_NET_SCH_PIE=m +CONFIG_NET_SCH_PLUG=m +CONFIG_NET_CLS_BASIC=m +CONFIG_NET_CLS_TCINDEX=m +CONFIG_NET_CLS_ROUTE4=m +CONFIG_NET_CLS_FW=m +CONFIG_NET_CLS_U32=m +CONFIG_CLS_U32_PERF=y +CONFIG_CLS_U32_MARK=y +CONFIG_NET_CLS_RSVP=m +CONFIG_NET_CLS_RSVP6=m +CONFIG_NET_CLS_FLOW=m +CONFIG_NET_CLS_CGROUP=m +CONFIG_NET_CLS_BPF=m +CONFIG_NET_CLS_FLOWER=m +CONFIG_NET_EMATCH=y +CONFIG_NET_EMATCH_CMP=m +CONFIG_NET_EMATCH_NBYTE=m +CONFIG_NET_EMATCH_U32=m +CONFIG_NET_EMATCH_META=m +CONFIG_NET_EMATCH_TEXT=m +CONFIG_NET_CLS_ACT=y +CONFIG_NET_ACT_POLICE=m +CONFIG_NET_ACT_GACT=m +CONFIG_GACT_PROB=y +CONFIG_NET_ACT_MIRRED=m +CONFIG_NET_ACT_IPT=m +CONFIG_NET_ACT_NAT=m +CONFIG_NET_ACT_PEDIT=m +CONFIG_NET_ACT_SIMP=m +CONFIG_NET_ACT_SKBEDIT=m +CONFIG_NET_ACT_CSUM=m +CONFIG_NET_ACT_VLAN=m +CONFIG_NET_ACT_BPF=m +CONFIG_NET_ACT_CONNMARK=m +CONFIG_DNS_RESOLVER=y +CONFIG_VSOCKETS=m +CONFIG_VIRTIO_VSOCKETS=m +CONFIG_NETLINK_DIAG=m +CONFIG_CGROUP_NET_PRIO=y +CONFIG_BT=m +CONFIG_BT_HCIBTUSB=m +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_BCSP=y +CONFIG_BT_HCIUART_ATH3K=y +CONFIG_BT_HCIUART_INTEL=y +CONFIG_BT_HCIUART_QCA=y +CONFIG_BT_HCIBCM203X=m +CONFIG_BT_HCIBPA10X=m +CONFIG_BT_HCIBFUSB=m +CONFIG_BT_HCIVHCI=m +CONFIG_BT_MRVL=m +CONFIG_BT_ATH3K=m +# CONFIG_WIRELESS is not set +CONFIG_PCI=y +CONFIG_PCIEPORTBUS=y +CONFIG_PCI_IOV=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_FW_LOADER_USER_HELPER=y +CONFIG_CONNECTOR=y +CONFIG_GOOGLE_FIRMWARE=y +CONFIG_GOOGLE_COREBOOT_TABLE=m +CONFIG_GOOGLE_MEMCONSOLE_COREBOOT=m +CONFIG_EFI_VARS=y +CONFIG_PARPORT=y +CONFIG_PARPORT_PC=y +CONFIG_BLK_DEV_FD=m +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_DRBD=y +CONFIG_BLK_DEV_NBD=m +CONFIG_BLK_DEV_RAM=y +CONFIG_CDROM_PKTCDVD=y +CONFIG_VIRTIO_BLK=y +CONFIG_BLK_DEV_NVME=y +CONFIG_ENCLOSURE_SERVICES=y +CONFIG_BLK_DEV_SD=y +CONFIG_BLK_DEV_SR=y +CONFIG_CHR_DEV_SG=y +CONFIG_SCSI_ENCLOSURE=y +CONFIG_SCSI_CONSTANTS=y +CONFIG_SCSI_LOGGING=y +CONFIG_SCSI_SCAN_ASYNC=y +CONFIG_SCSI_FC_ATTRS=y +CONFIG_SCSI_SAS_LIBSAS=y +CONFIG_SCSI_SAS_ATA=y +CONFIG_ISCSI_TCP=m +CONFIG_BLK_DEV_3W_XXXX_RAID=m +CONFIG_SCSI_HPSA=y +CONFIG_SCSI_3W_9XXX=m +CONFIG_SCSI_3W_SAS=m +CONFIG_SCSI_AACRAID=m +CONFIG_SCSI_AIC7XXX=y +CONFIG_AIC7XXX_RESET_DELAY_MS=15000 +# CONFIG_AIC7XXX_DEBUG_ENABLE is not set +CONFIG_SCSI_AIC79XX=y +CONFIG_AIC79XX_RESET_DELAY_MS=15000 +# CONFIG_AIC79XX_DEBUG_ENABLE is not set +CONFIG_SCSI_AIC94XX=m +# CONFIG_AIC94XX_DEBUG is not set +CONFIG_SCSI_MVSAS=m +CONFIG_SCSI_DPT_I2O=m +CONFIG_SCSI_ARCMSR=m +CONFIG_MEGARAID_NEWGEN=y +CONFIG_MEGARAID_MM=y +CONFIG_MEGARAID_MAILBOX=y +CONFIG_MEGARAID_LEGACY=y +CONFIG_MEGARAID_SAS=y +CONFIG_SCSI_MPT2SAS=y +CONFIG_SCSI_SMARTPQI=m +CONFIG_SCSI_BUSLOGIC=y +CONFIG_SCSI_QLOGIC_1280=y +CONFIG_SCSI_DH=y +CONFIG_ATA=y +CONFIG_SATA_AHCI=y +CONFIG_SATA_SIL24=y +CONFIG_ATA_PIIX=y +CONFIG_SATA_NV=y +CONFIG_SATA_PROMISE=y +CONFIG_SATA_SIL=y +CONFIG_SATA_SIS=y +CONFIG_SATA_SVW=y +CONFIG_SATA_VIA=y +CONFIG_PATA_ATIIXP=y +CONFIG_PATA_JMICRON=y +CONFIG_PATA_MPIIX=y +CONFIG_MD=y +CONFIG_BLK_DEV_MD=y +CONFIG_MD_LINEAR=y +CONFIG_MD_RAID0=y +CONFIG_MD_RAID1=y +CONFIG_MD_RAID456=y +CONFIG_MD_MULTIPATH=y +CONFIG_BLK_DEV_DM=m +CONFIG_DM_CRYPT=m +CONFIG_DM_SNAPSHOT=m +CONFIG_DM_THIN_PROVISIONING=m +CONFIG_DM_MIRROR=m +CONFIG_DM_LOG_USERSPACE=m +CONFIG_DM_RAID=m +CONFIG_DM_ZERO=m +CONFIG_DM_MULTIPATH=m +CONFIG_DM_UEVENT=y +CONFIG_TARGET_CORE=m +CONFIG_ISCSI_TARGET=m +CONFIG_FUSION=y +CONFIG_FUSION_SPI=y +CONFIG_FUSION_FC=y +CONFIG_FUSION_SAS=y +CONFIG_FUSION_CTL=y +CONFIG_NETDEVICES=y +CONFIG_BONDING=m +CONFIG_DUMMY=y +CONFIG_WIREGUARD=m +CONFIG_MACVLAN=y +CONFIG_MACVTAP=y +CONFIG_IPVLAN=m +CONFIG_IPVTAP=m +CONFIG_VXLAN=m +CONFIG_NETCONSOLE=m +CONFIG_NETCONSOLE_DYNAMIC=y +CONFIG_TUN=y +CONFIG_VETH=y +CONFIG_VIRTIO_NET=m +CONFIG_NLMON=m +CONFIG_VORTEX=y +CONFIG_TYPHOON=y +CONFIG_ACENIC=y +CONFIG_ATL1=y +CONFIG_BNX2=y +CONFIG_TIGON3=y +CONFIG_BNX2X=y +CONFIG_BNXT=m +CONFIG_CAVIUM_PTP=y +CONFIG_CHELSIO_T1=y +CONFIG_CHELSIO_T3=y +CONFIG_NET_TULIP=y +CONFIG_DE2104X=y +CONFIG_TULIP=y +CONFIG_TULIP_MMIO=y +CONFIG_TULIP_NAPI=y +CONFIG_TULIP_NAPI_HW_MITIGATION=y +CONFIG_DE4X5=y +CONFIG_DL2K=y +CONFIG_E100=y +CONFIG_E1000=y +CONFIG_E1000E=y +CONFIG_IGB=y +CONFIG_IGBVF=y +CONFIG_IXGB=m +CONFIG_IXGBE=m +CONFIG_I40E=m +CONFIG_SKGE=y +CONFIG_SKY2=y +CONFIG_S2IO=y +CONFIG_FORCEDETH=y +CONFIG_NETXEN_NIC=m +CONFIG_8139CP=y +CONFIG_8139TOO=y +CONFIG_R8169=y +CONFIG_SIS900=y +CONFIG_SIS190=y +CONFIG_VIA_RHINE=y +CONFIG_VIA_VELOCITY=y +CONFIG_USB_RTL8150=m +CONFIG_USB_RTL8152=m +CONFIG_USB_LAN78XX=m +CONFIG_USB_USBNET=m +CONFIG_USB_NET_DM9601=m +# CONFIG_WLAN is not set +CONFIG_INPUT_EVDEV=y +# CONFIG_SERIO_SERPORT is not set +# CONFIG_LEGACY_PTYS is not set +CONFIG_SERIAL_8250=y +# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_DEV_BUS=m +CONFIG_PRINTER=y +CONFIG_VIRTIO_CONSOLE=m +CONFIG_IPMI_HANDLER=y +CONFIG_IPMI_DEVICE_INTERFACE=m +CONFIG_IPMI_SI=m +CONFIG_IPMI_WATCHDOG=m +CONFIG_IPMI_POWEROFF=m +CONFIG_HPET=y +CONFIG_I2C_CHARDEV=m +CONFIG_I2C_AMD756=m +CONFIG_I2C_AMD756_S4882=m +CONFIG_I2C_AMD8111=m +CONFIG_I2C_I801=y +CONFIG_I2C_ISCH=m +CONFIG_I2C_PIIX4=m +CONFIG_I2C_NFORCE2=m +CONFIG_I2C_NFORCE2_S4985=m +CONFIG_I2C_SIS5595=m +CONFIG_I2C_SIS630=m +CONFIG_I2C_SIS96X=m +CONFIG_I2C_VIA=m +CONFIG_I2C_VIAPRO=m +CONFIG_GPIOLIB=y +CONFIG_SENSORS_K8TEMP=m +CONFIG_SENSORS_K10TEMP=m +CONFIG_SENSORS_FAM15H_POWER=m +CONFIG_WATCHDOG=y +CONFIG_WATCHDOG_CORE=y +CONFIG_I6300ESB_WDT=m +CONFIG_ITCO_WDT=m +CONFIG_ITCO_VENDOR_SUPPORT=y +CONFIG_HP_WATCHDOG=m +CONFIG_NV_TCO=m +CONFIG_LPC_ICH=y +CONFIG_MEDIA_SUPPORT=y +CONFIG_MEDIA_CAMERA_SUPPORT=y +CONFIG_MEDIA_USB_SUPPORT=y +CONFIG_USB_VIDEO_CLASS=m +CONFIG_USB_PWC=m +CONFIG_VIDEO_CPIA2=m +CONFIG_USB_ZR364XX=m +CONFIG_USB_STKWEBCAM=m +CONFIG_USB_S2255=m +CONFIG_VIDEO_USBTV=m +CONFIG_VIDEO_EM28XX=m +CONFIG_VIDEO_EM28XX_V4L2=m +CONFIG_VIDEO_EM28XX_ALSA=m +CONFIG_AGP=y +CONFIG_AGP_AMD64=y +CONFIG_AGP_INTEL=m +CONFIG_AGP_SIS=m +CONFIG_AGP_VIA=m +CONFIG_DRM=m +CONFIG_DRM_AMDGPU=m +CONFIG_DRM_AMDGPU_SI=y +CONFIG_DRM_AMDGPU_CIK=y +CONFIG_HSA_AMD=y +CONFIG_DRM_NOUVEAU=m +CONFIG_DRM_I915=m +CONFIG_DRM_VGEM=m +CONFIG_DRM_UDL=m +CONFIG_DRM_MGAG200=m +CONFIG_DRM_BOCHS=m +CONFIG_DRM_CIRRUS_QEMU=m +CONFIG_FB=y +CONFIG_FB_CIRRUS=m +CONFIG_FB_PM2=m +CONFIG_FB_CYBER2000=m +CONFIG_FB_ARC=m +CONFIG_FB_VGA16=m +CONFIG_FB_EFI=y +CONFIG_FB_NVIDIA=m +CONFIG_FB_NVIDIA_I2C=y +CONFIG_FB_NVIDIA_DEBUG=y +CONFIG_FB_I740=m +CONFIG_FB_LE80578=m +CONFIG_FB_CARILLO_RANCH=m +CONFIG_FB_MATROX=m +CONFIG_FB_MATROX_MILLENIUM=y +CONFIG_FB_MATROX_MYSTIQUE=y +CONFIG_FB_MATROX_G=y +CONFIG_FB_MATROX_I2C=m +CONFIG_FB_RADEON=m +CONFIG_FB_RADEON_DEBUG=y +CONFIG_FB_SMSCUFX=m +CONFIG_FB_UDL=m +CONFIG_FB_IBM_GXT4500=m +CONFIG_FB_SIMPLE=y +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_BACKLIGHT_APPLE=m +CONFIG_BACKLIGHT_SAHARA=m +CONFIG_BACKLIGHT_ADP8860=m +CONFIG_BACKLIGHT_ADP8870=m +CONFIG_BACKLIGHT_LM3639=m +CONFIG_BACKLIGHT_LV5207LP=m +CONFIG_BACKLIGHT_BD6107=m +CONFIG_BACKLIGHT_ARCXCNN=m +CONFIG_SOUND=m +CONFIG_SND=m +CONFIG_SND_CTXFI=m +CONFIG_SND_EMU10K1=m +CONFIG_SND_EMU10K1X=m +CONFIG_SND_ENS1370=m +CONFIG_SND_ENS1371=m +CONFIG_SND_ES1938=m +CONFIG_SND_ES1968=m +CONFIG_SND_INTEL8X0=m +CONFIG_SND_SONICVIBES=m +CONFIG_SND_VIA82XX=m +CONFIG_SND_VIA82XX_MODEM=m +CONFIG_SND_YMFPCI=m +CONFIG_SND_HDA_INTEL=m +CONFIG_SND_HDA_CODEC_REALTEK=m +CONFIG_SND_HDA_CODEC_ANALOG=m +CONFIG_SND_HDA_CODEC_SIGMATEL=m +CONFIG_SND_HDA_CODEC_VIA=m +CONFIG_SND_HDA_CODEC_HDMI=m +CONFIG_SND_HDA_CODEC_CIRRUS=m +CONFIG_SND_HDA_CODEC_CONEXANT=m +CONFIG_SND_HDA_CODEC_CA0110=m +CONFIG_SND_HDA_CODEC_CA0132=m +CONFIG_SND_HDA_CODEC_CMEDIA=m +CONFIG_SND_HDA_CODEC_SI3054=m +CONFIG_SND_USB_AUDIO=m +CONFIG_HIDRAW=y +CONFIG_HID_DRAGONRISE=y +CONFIG_HID_KYE=y +CONFIG_HID_GYRATION=y +CONFIG_HID_TWINHAN=y +CONFIG_HID_LED=m +CONFIG_HID_LOGITECH_DJ=m +CONFIG_HID_NTRIG=y +CONFIG_HID_ORTEK=y +CONFIG_HID_PANTHERLORD=y +CONFIG_HID_PETALYNX=y +CONFIG_HID_SAMSUNG=y +CONFIG_HID_SUNPLUS=y +CONFIG_HID_GREENASIA=y +CONFIG_HID_SMARTJOYPLUS=y +CONFIG_HID_TOPSEED=y +CONFIG_HID_THRUSTMASTER=y +CONFIG_HID_ZEROPLUS=y +CONFIG_USB=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_EHCI_HCD=y +# CONFIG_USB_EHCI_TT_NEWSCHED is not set +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_UHCI_HCD=y +CONFIG_USB_SL811_HCD=y +CONFIG_USB_STORAGE=y +CONFIG_USB_SERIAL=y +CONFIG_USB_SERIAL_CH341=m +CONFIG_USB_SERIAL_CP210X=m +CONFIG_USB_SERIAL_FTDI_SIO=m +CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_OMNINET=m +CONFIG_USB_CHAOSKEY=m +CONFIG_RTC_CLASS=y +# CONFIG_RTC_INTF_PROC is not set +CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_BALLOON=m +CONFIG_VIRTIO_INPUT=m +CONFIG_AMD_IOMMU=y +CONFIG_INTEL_IOMMU=y +# CONFIG_INTEL_IOMMU_SCALABLE_MODE_DEFAULT_ON is not set +CONFIG_IRQ_REMAP=y +CONFIG_LIBNVDIMM=m +CONFIG_EXT2_FS=y +CONFIG_EXT3_FS=m +CONFIG_EXT3_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +CONFIG_REISERFS_FS=y +CONFIG_REISERFS_PROC_INFO=y +CONFIG_REISERFS_FS_XATTR=y +CONFIG_REISERFS_FS_POSIX_ACL=y +CONFIG_XFS_FS=y +CONFIG_XFS_QUOTA=y +CONFIG_XFS_POSIX_ACL=y +CONFIG_XFS_RT=y +CONFIG_BTRFS_FS=m +CONFIG_BTRFS_FS_POSIX_ACL=y +CONFIG_FS_DAX=y +CONFIG_FANOTIFY=y +CONFIG_QUOTA=y +CONFIG_QUOTA_NETLINK_INTERFACE=y +# CONFIG_PRINT_QUOTA_WARNING is not set +CONFIG_QFMT_V2=m +CONFIG_AUTOFS4_FS=m +CONFIG_FUSE_FS=m +CONFIG_VIRTIO_FS=m +CONFIG_OVERLAY_FS=m +CONFIG_FSCACHE=y +CONFIG_FSCACHE_STATS=y +CONFIG_FSCACHE_DEBUG=y +CONFIG_CACHEFILES=y +CONFIG_CACHEFILES_DEBUG=y +CONFIG_ISO9660_FS=m +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_UDF_FS=m +CONFIG_MSDOS_FS=m +CONFIG_VFAT_FS=m +CONFIG_NTFS_FS=m +CONFIG_PROC_KCORE=y +CONFIG_PROC_CHILDREN=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_HUGETLBFS=y +CONFIG_ECRYPT_FS=m +CONFIG_ECRYPT_FS_MESSAGING=y +CONFIG_SQUASHFS=m +CONFIG_SQUASHFS_XATTR=y +CONFIG_SQUASHFS_LZ4=y +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XZ=y +CONFIG_SQUASHFS_4K_DEVBLK_SIZE=y +CONFIG_SQUASHFS_EMBEDDED=y +CONFIG_PSTORE=m +CONFIG_NFS_FS=m +CONFIG_NFS_V3_ACL=y +CONFIG_NFS_V4=m +CONFIG_NFS_SWAP=y +CONFIG_NFS_V4_1=y +CONFIG_NFS_V4_2=y +CONFIG_NFS_FSCACHE=y +CONFIG_NFSD=m +CONFIG_NFSD_V3_ACL=y +CONFIG_NFSD_V4=y +CONFIG_SUNRPC_DEBUG=y +CONFIG_CEPH_FS=m +CONFIG_CEPH_FSCACHE=y +CONFIG_CEPH_FS_POSIX_ACL=y +CONFIG_CIFS=m +# CONFIG_CIFS_STATS2 is not set +CONFIG_CIFS_XATTR=y +CONFIG_NLS_CODEPAGE_437=m +CONFIG_NLS_CODEPAGE_850=m +CONFIG_NLS_CODEPAGE_852=m +CONFIG_NLS_ISO8859_1=m +CONFIG_NLS_UTF8=m +CONFIG_DLM=m +CONFIG_SECURITY=y +CONFIG_SECURITYFS=y +CONFIG_SECURITY_LOCKDOWN_LSM=y +CONFIG_LSM="lockdown,yama,loadpin,safesetid,integrity,bpf" +CONFIG_CRYPTO_CTS=m +CONFIG_CRYPTO_ECB=y +CONFIG_CRYPTO_PCBC=y +CONFIG_CRYPTO_CMAC=y +CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_MD4=y +CONFIG_CRYPTO_SHA256=y +CONFIG_CRYPTO_AES=y +CONFIG_CRYPTO_DES=y +CONFIG_CRC16=y +CONFIG_CRC_ITU_T=y +CONFIG_FONTS=y +CONFIG_FONT_8x8=y +CONFIG_FONT_7x14=y +CONFIG_FONT_PEARL_8x8=y +CONFIG_FONT_ACORN_8x8=y +CONFIG_FONT_MINI_4x6=y +CONFIG_FONT_10x18=y +CONFIG_FONT_SUN8x16=y +CONFIG_FONT_SUN12x22=y +CONFIG_FONT_TER16x32=y +CONFIG_PRINTK_TIME=y +CONFIG_DYNAMIC_DEBUG=y +CONFIG_DEBUG_INFO=y +CONFIG_MAGIC_SYSRQ=y +CONFIG_DEBUG_KERNEL=y +CONFIG_FUNCTION_TRACER=y +CONFIG_FUNCTION_PROFILER=y +CONFIG_FTRACE_SYSCALLS=y +CONFIG_BLK_DEV_IO_TRACE=y +CONFIG_EARLY_PRINTK_DBGP=y +CONFIG_MEMTEST=y From 71c356501f0c941137f7706fd2c7eaabae6d54d0 Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Mon, 4 Apr 2022 13:47:47 +0200 Subject: [PATCH 07/32] config-mpi: Update for new kernel version --- config-mpi | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/config-mpi b/config-mpi index 49adf0b8d522e..7ea1a41d3b7e9 100644 --- a/config-mpi +++ b/config-mpi @@ -607,13 +607,13 @@ CONFIG_LPC_ICH=y CONFIG_MEDIA_SUPPORT=y CONFIG_MEDIA_CAMERA_SUPPORT=y CONFIG_MEDIA_USB_SUPPORT=y -CONFIG_USB_VIDEO_CLASS=m -CONFIG_USB_PWC=m CONFIG_VIDEO_CPIA2=m -CONFIG_USB_ZR364XX=m -CONFIG_USB_STKWEBCAM=m +CONFIG_USB_PWC=m CONFIG_USB_S2255=m +CONFIG_USB_STKWEBCAM=m CONFIG_VIDEO_USBTV=m +CONFIG_USB_VIDEO_CLASS=m +CONFIG_USB_ZR364XX=m CONFIG_VIDEO_EM28XX=m CONFIG_VIDEO_EM28XX_V4L2=m CONFIG_VIDEO_EM28XX_ALSA=m @@ -837,9 +837,8 @@ CONFIG_FONT_SUN12x22=y CONFIG_FONT_TER16x32=y CONFIG_PRINTK_TIME=y CONFIG_DYNAMIC_DEBUG=y -CONFIG_DEBUG_INFO=y -CONFIG_MAGIC_SYSRQ=y CONFIG_DEBUG_KERNEL=y +CONFIG_MAGIC_SYSRQ=y CONFIG_FUNCTION_TRACER=y CONFIG_FUNCTION_PROFILER=y CONFIG_FTRACE_SYSCALLS=y From 51f051d0cbbf0871489cc58a5bd3146a0e6e0df1 Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Mon, 4 Apr 2022 16:00:23 +0200 Subject: [PATCH 08/32] fs: Restore mnt_warn_timestamp_expiry Include removed code from upstream in a disabled state to make it easier for us to follow upstream (e.g. when mnt_warn_timestamp_expiry evolves). --- fs/namespace.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/fs/namespace.c b/fs/namespace.c index e63928d57e6ee..b1f99a6db50e2 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -2606,6 +2606,30 @@ static void set_mount_attributes(struct mount *mnt, unsigned int mnt_flags) touch_mnt_namespace(mnt->mnt_ns); } +static void mnt_warn_timestamp_expiry(struct path *mountpoint, struct vfsmount *mnt) +{ + struct super_block *sb = mnt->mnt_sb; + + if (!__mnt_is_readonly(mnt) && + (!(sb->s_iflags & SB_I_TS_EXPIRY_WARNED)) && + (ktime_get_real_seconds() + TIME_UPTIME_SEC_MAX > sb->s_time_max)) { + char *buf = (char *)__get_free_page(GFP_KERNEL); + char *mntpath = buf ? d_path(mountpoint, buf, PAGE_SIZE) : ERR_PTR(-ENOMEM); + struct tm tm; + + time64_to_tm(sb->s_time_max, 0, &tm); + + pr_warn("%s filesystem being %s at %s supports timestamps until %04ld (0x%llx)\n", + sb->s_type->name, + is_mounted(mnt) ? "remounted" : "mounted", + mntpath, + tm.tm_year+1900, (unsigned long long)sb->s_time_max); + + free_page((unsigned long)buf); + sb->s_iflags |= SB_I_TS_EXPIRY_WARNED; + } +} + /* * Handle reconfiguration of the mountpoint only without alteration of the * superblock it refers to. This is triggered by specifying MS_REMOUNT|MS_BIND @@ -2638,6 +2662,8 @@ static int do_reconfigure_mnt(struct path *path, unsigned int mnt_flags) unlock_mount_hash(); up_read(&sb->s_umount); + if (0) mnt_warn_timestamp_expiry(path, &mnt->mnt); + return ret; } @@ -2683,6 +2709,8 @@ static int do_remount(struct path *path, int ms_flags, int sb_flags, up_write(&sb->s_umount); } + if (0) mnt_warn_timestamp_expiry(path, &mnt->mnt); + put_fs_context(fc); return err; } @@ -2950,6 +2978,8 @@ static int do_new_mount_fc(struct fs_context *fc, struct path *mountpoint, if (IS_ERR(mnt)) return PTR_ERR(mnt); + if (0) mnt_warn_timestamp_expiry(mountpoint, mnt); + mp = lock_mount(mountpoint); if (IS_ERR(mp)) { mntput(mnt); From 98d1584a16cbafa660347afb59202599a2810c96 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Tue, 26 Apr 2022 23:41:05 +0300 Subject: [PATCH 09/32] floppy: disable FDRAWCMD by default Minh Yuan reported a concurrency use-after-free issue in the floppy code between raw_cmd_ioctl and seek_interrupt. [ It turns out this has been around, and that others have reported the KASAN splats over the years, but Minh Yuan had a reproducer for it and so gets primary credit for reporting it for this fix - Linus ] The problem is, this driver tends to break very easily and nowadays, nobody is expected to use FDRAWCMD anyway since it was used to manipulate non-standard formats. The risk of breaking the driver is higher than the risk presented by this race, and accessing the device requires privileges anyway. Let's just add a config option to completely disable this ioctl and leave it disabled by default. Distros shouldn't use it, and only those running on antique hardware might need to enable it. Link: https://lore.kernel.org/all/000000000000b71cdd05d703f6bf@google.com/ Link: https://lore.kernel.org/lkml/CAKcFiNC=MfYVW-Jt9A3=FPJpTwCD2PL_ULNCpsCVE5s8ZeBQgQ@mail.gmail.com Link: https://lore.kernel.org/all/CAEAjamu1FRhz6StCe_55XY5s389ZP_xmCF69k987En+1z53=eg@mail.gmail.com Reported-by: Minh Yuan Reported-by: syzbot+8e8958586909d62b6840@syzkaller.appspotmail.com Reported-by: cruise k Reported-by: Kyungtae Kim Suggested-by: Linus Torvalds Tested-by: Denis Efremov Signed-off-by: Willy Tarreau Signed-off-by: Linus Torvalds --- drivers/block/Kconfig | 16 ++++++++++++++++ drivers/block/floppy.c | 43 +++++++++++++++++++++++++++++++----------- 2 files changed, 48 insertions(+), 11 deletions(-) diff --git a/drivers/block/Kconfig b/drivers/block/Kconfig index 519b6d38d4df6..fdb81f2794cde 100644 --- a/drivers/block/Kconfig +++ b/drivers/block/Kconfig @@ -33,6 +33,22 @@ config BLK_DEV_FD To compile this driver as a module, choose M here: the module will be called floppy. +config BLK_DEV_FD_RAWCMD + bool "Support for raw floppy disk commands (DEPRECATED)" + depends on BLK_DEV_FD + help + If you want to use actual physical floppies and expect to do + special low-level hardware accesses to them (access and use + non-standard formats, for example), then enable this. + + Note that the code enabled by this option is rarely used and + might be unstable or insecure, and distros should not enable it. + + Note: FDRAWCMD is deprecated and will be removed from the kernel + in the near future. + + If unsure, say N. + config AMIGA_FLOPPY tristate "Amiga floppy support" depends on AMIGA diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c index 8c647532e3ce9..d5b9ff9bcbb2b 100644 --- a/drivers/block/floppy.c +++ b/drivers/block/floppy.c @@ -2982,6 +2982,8 @@ static const char *drive_name(int type, int drive) return "(null)"; } +#ifdef CONFIG_BLK_DEV_FD_RAWCMD + /* raw commands */ static void raw_cmd_done(int flag) { @@ -3181,6 +3183,35 @@ static int raw_cmd_ioctl(int cmd, void __user *param) return ret; } +static int floppy_raw_cmd_ioctl(int type, int drive, int cmd, + void __user *param) +{ + int ret; + + pr_warn_once("Note: FDRAWCMD is deprecated and will be removed from the kernel in the near future.\n"); + + if (type) + return -EINVAL; + if (lock_fdc(drive)) + return -EINTR; + set_floppy(drive); + ret = raw_cmd_ioctl(cmd, param); + if (ret == -EINTR) + return -EINTR; + process_fd_request(); + return ret; +} + +#else /* CONFIG_BLK_DEV_FD_RAWCMD */ + +static int floppy_raw_cmd_ioctl(int type, int drive, int cmd, + void __user *param) +{ + return -EOPNOTSUPP; +} + +#endif + static int invalidate_drive(struct block_device *bdev) { /* invalidate the buffer track to force a reread */ @@ -3369,7 +3400,6 @@ static int fd_locked_ioctl(struct block_device *bdev, fmode_t mode, unsigned int { int drive = (long)bdev->bd_disk->private_data; int type = ITYPE(drive_state[drive].fd_device); - int i; int ret; int size; union inparam { @@ -3520,16 +3550,7 @@ static int fd_locked_ioctl(struct block_device *bdev, fmode_t mode, unsigned int outparam = &write_errors[drive]; break; case FDRAWCMD: - if (type) - return -EINVAL; - if (lock_fdc(drive)) - return -EINTR; - set_floppy(drive); - i = raw_cmd_ioctl(cmd, (void __user *)param); - if (i == -EINTR) - return -EINTR; - process_fd_request(); - return i; + return floppy_raw_cmd_ioctl(type, drive, cmd, (void __user *)param); case FDTWADDLE: if (lock_fdc(drive)) return -EINTR; From 7ca0047dc8b7d69dc62174086d7620a3f2d629eb Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Thu, 28 Apr 2022 12:58:23 +0200 Subject: [PATCH 10/32] ext4: Reduce logging 186527f84a0b ("ext4: Reduce "mounted" log from INFO to DEBUG") reduced the logging of "EXT4-fs (): mounted filesystem..."- messages by setting the level from KERN_INFO to KERN_DEBUG. This did not have the desired effect, because we usually log DEBUG messages to /var/log/messages as well. Also we still fill the ring buffer and lose other information in dmesg. Disable the logging completly. While we are at it, disable "EXT4-fs (): shut down requested (2)"- messages, too, as we _might_ use that ioctl in the future for our cluster jobs. --- fs/ext4/ioctl.c | 2 +- fs/ext4/super.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/fs/ext4/ioctl.c b/fs/ext4/ioctl.c index ba44fa1be70ab..266a01f637d2d 100644 --- a/fs/ext4/ioctl.c +++ b/fs/ext4/ioctl.c @@ -812,7 +812,7 @@ static int ext4_shutdown(struct super_block *sb, unsigned long arg) if (ext4_forced_shutdown(sbi)) return 0; - ext4_msg(sb, KERN_ALERT, "shut down requested (%d)", flags); + while (0) ext4_msg(sb, KERN_ALERT, "shut down requested (%d)", flags); trace_ext4_shutdown(sb, flags); switch (flags) { diff --git a/fs/ext4/super.c b/fs/ext4/super.c index 1c516efcbcffb..e6b3d81931486 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c @@ -5614,8 +5614,8 @@ static int ext4_fill_super(struct super_block *sb, struct fs_context *fc) } else descr = "out journal"; - if (___ratelimit(&ext4_mount_msg_ratelimit, "EXT4-fs mount")) - ext4_msg(sb, KERN_DEBUG, "mounted filesystem with%s. " + if (0 && ___ratelimit(&ext4_mount_msg_ratelimit, "EXT4-fs mount")) + ext4_msg(sb, KERN_INFO, "mounted filesystem with%s. " "Quota mode: %s.", descr, ext4_quota_mode(sb)); /* Update the s_overhead_clusters if necessary */ From ba53aa01225fc4f0105c1a212a3077509c8bb3bd Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Mon, 6 Jun 2022 04:00:26 +0200 Subject: [PATCH 11/32] config-mpi: Update for new kernel version --- config-mpi | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/config-mpi b/config-mpi index 7ea1a41d3b7e9..ee1b06837f7de 100644 --- a/config-mpi +++ b/config-mpi @@ -38,7 +38,6 @@ CONFIG_CGROUP_BPF=y CONFIG_CGROUP_DEBUG=y CONFIG_USER_NS=y CONFIG_BLK_DEV_INITRD=y -CONFIG_SLAB=y CONFIG_SMP=y CONFIG_X86_X2APIC=y CONFIG_GART_IOMMU=y @@ -82,10 +81,11 @@ CONFIG_IOSCHED_BFQ=y CONFIG_BFQ_GROUP_IOSCHED=y # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set CONFIG_BINFMT_MISC=y +CONFIG_ZSWAP=y +CONFIG_SLAB=y CONFIG_MEMORY_HOTPLUG=y CONFIG_MEMORY_HOTREMOVE=y CONFIG_TRANSPARENT_HUGEPAGE=y -CONFIG_ZSWAP=y CONFIG_ZONE_DEVICE=y CONFIG_NET=y CONFIG_PACKET=m @@ -535,7 +535,6 @@ CONFIG_TULIP=y CONFIG_TULIP_MMIO=y CONFIG_TULIP_NAPI=y CONFIG_TULIP_NAPI_HW_MITIGATION=y -CONFIG_DE4X5=y CONFIG_DL2K=y CONFIG_E100=y CONFIG_E1000=y From ed3c0502183e70e9582fe1c78402dd54e30a3811 Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Fri, 19 Aug 2022 07:43:40 +0200 Subject: [PATCH 12/32] config-mpi: Update for new kernel version --- config-mpi | 3 --- 1 file changed, 3 deletions(-) diff --git a/config-mpi b/config-mpi index ee1b06837f7de..0f97ffe99bfe7 100644 --- a/config-mpi +++ b/config-mpi @@ -417,7 +417,6 @@ CONFIG_CONNECTOR=y CONFIG_GOOGLE_FIRMWARE=y CONFIG_GOOGLE_COREBOOT_TABLE=m CONFIG_GOOGLE_MEMCONSOLE_COREBOOT=m -CONFIG_EFI_VARS=y CONFIG_PARPORT=y CONFIG_PARPORT_PC=y CONFIG_BLK_DEV_FD=m @@ -454,7 +453,6 @@ CONFIG_AIC79XX_RESET_DELAY_MS=15000 CONFIG_SCSI_AIC94XX=m # CONFIG_AIC94XX_DEBUG is not set CONFIG_SCSI_MVSAS=m -CONFIG_SCSI_DPT_I2O=m CONFIG_SCSI_ARCMSR=m CONFIG_MEGARAID_NEWGEN=y CONFIG_MEGARAID_MM=y @@ -609,7 +607,6 @@ CONFIG_MEDIA_USB_SUPPORT=y CONFIG_VIDEO_CPIA2=m CONFIG_USB_PWC=m CONFIG_USB_S2255=m -CONFIG_USB_STKWEBCAM=m CONFIG_VIDEO_USBTV=m CONFIG_USB_VIDEO_CLASS=m CONFIG_USB_ZR364XX=m From 396fee55806d7563c12cbadfbb52d14c9f81a696 Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Mon, 17 Oct 2022 09:24:51 +0200 Subject: [PATCH 13/32] config-mpi: Update for new kernel version --- config-mpi | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/config-mpi b/config-mpi index 0f97ffe99bfe7..0ae9780b91df2 100644 --- a/config-mpi +++ b/config-mpi @@ -604,12 +604,10 @@ CONFIG_LPC_ICH=y CONFIG_MEDIA_SUPPORT=y CONFIG_MEDIA_CAMERA_SUPPORT=y CONFIG_MEDIA_USB_SUPPORT=y -CONFIG_VIDEO_CPIA2=m CONFIG_USB_PWC=m CONFIG_USB_S2255=m CONFIG_VIDEO_USBTV=m CONFIG_USB_VIDEO_CLASS=m -CONFIG_USB_ZR364XX=m CONFIG_VIDEO_EM28XX=m CONFIG_VIDEO_EM28XX_V4L2=m CONFIG_VIDEO_EM28XX_ALSA=m @@ -810,6 +808,8 @@ CONFIG_SECURITY=y CONFIG_SECURITYFS=y CONFIG_SECURITY_LOCKDOWN_LSM=y CONFIG_LSM="lockdown,yama,loadpin,safesetid,integrity,bpf" +CONFIG_CRYPTO_AES=y +CONFIG_CRYPTO_DES=y CONFIG_CRYPTO_CTS=m CONFIG_CRYPTO_ECB=y CONFIG_CRYPTO_PCBC=y @@ -817,8 +817,6 @@ CONFIG_CRYPTO_CMAC=y CONFIG_CRYPTO_HMAC=y CONFIG_CRYPTO_MD4=y CONFIG_CRYPTO_SHA256=y -CONFIG_CRYPTO_AES=y -CONFIG_CRYPTO_DES=y CONFIG_CRC16=y CONFIG_CRC_ITU_T=y CONFIG_FONTS=y From 1fecca0da0d7f3e83cbad9b21730871a9ca622f1 Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Sun, 13 Mar 2022 10:09:16 +0100 Subject: [PATCH 14/32] config-mpi: Set Ethernet drivers to M Set all Ethernet drivers, which we currently have configured statically to M. This works around a bug in the current bnx2x driver which scans for firmware to early. Do it for all other drivers as well to avoid simmilar problems in the future and reduce kernel memory. We don't need thernet drivers before we have our root fs. --- config-mpi | 56 +++++++++++++++++++++++++++--------------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/config-mpi b/config-mpi index 0ae9780b91df2..423db9a0d7f23 100644 --- a/config-mpi +++ b/config-mpi @@ -516,44 +516,44 @@ CONFIG_TUN=y CONFIG_VETH=y CONFIG_VIRTIO_NET=m CONFIG_NLMON=m -CONFIG_VORTEX=y -CONFIG_TYPHOON=y -CONFIG_ACENIC=y -CONFIG_ATL1=y -CONFIG_BNX2=y -CONFIG_TIGON3=y -CONFIG_BNX2X=y +CONFIG_VORTEX=m +CONFIG_TYPHOON=m +CONFIG_ACENIC=m +CONFIG_ATL1=m +CONFIG_BNX2=m +CONFIG_TIGON3=m +CONFIG_BNX2X=m CONFIG_BNXT=m -CONFIG_CAVIUM_PTP=y -CONFIG_CHELSIO_T1=y -CONFIG_CHELSIO_T3=y +CONFIG_CAVIUM_PTP=m +CONFIG_CHELSIO_T1=m +CONFIG_CHELSIO_T3=m CONFIG_NET_TULIP=y -CONFIG_DE2104X=y -CONFIG_TULIP=y +CONFIG_DE2104X=m +CONFIG_TULIP=m CONFIG_TULIP_MMIO=y CONFIG_TULIP_NAPI=y CONFIG_TULIP_NAPI_HW_MITIGATION=y -CONFIG_DL2K=y -CONFIG_E100=y -CONFIG_E1000=y -CONFIG_E1000E=y -CONFIG_IGB=y -CONFIG_IGBVF=y +CONFIG_DL2K=m +CONFIG_E100=m +CONFIG_E1000=m +CONFIG_E1000E=m +CONFIG_IGB=m +CONFIG_IGBVF=m CONFIG_IXGB=m CONFIG_IXGBE=m CONFIG_I40E=m -CONFIG_SKGE=y -CONFIG_SKY2=y -CONFIG_S2IO=y -CONFIG_FORCEDETH=y +CONFIG_SKGE=m +CONFIG_SKY2=m +CONFIG_S2IO=m +CONFIG_FORCEDETH=m CONFIG_NETXEN_NIC=m -CONFIG_8139CP=y -CONFIG_8139TOO=y -CONFIG_R8169=y -CONFIG_SIS900=y -CONFIG_SIS190=y +CONFIG_8139CP=m +CONFIG_8139TOO=m +CONFIG_R8169=m +CONFIG_SIS900=m +CONFIG_SIS190=m CONFIG_VIA_RHINE=y -CONFIG_VIA_VELOCITY=y +CONFIG_VIA_VELOCITY=m CONFIG_USB_RTL8150=m CONFIG_USB_RTL8152=m CONFIG_USB_LAN78XX=m From 3de4803ef5922fb0954f83b1fa8e0ae068539d75 Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Sun, 13 Mar 2022 10:35:36 +0100 Subject: [PATCH 15/32] config-mpi: Disable SECURITY_LOCKDOWN_LSM --- config-mpi | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/config-mpi b/config-mpi index 423db9a0d7f23..2ccda977210b3 100644 --- a/config-mpi +++ b/config-mpi @@ -70,6 +70,7 @@ CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y CONFIG_MODULE_FORCE_UNLOAD=y CONFIG_MODVERSIONS=y +CONFIG_MODULE_SIG=y CONFIG_BLK_DEV_INTEGRITY=y CONFIG_BLK_DEV_THROTTLING=y CONFIG_BLK_CGROUP_IOCOST=y @@ -806,8 +807,6 @@ CONFIG_NLS_UTF8=m CONFIG_DLM=m CONFIG_SECURITY=y CONFIG_SECURITYFS=y -CONFIG_SECURITY_LOCKDOWN_LSM=y -CONFIG_LSM="lockdown,yama,loadpin,safesetid,integrity,bpf" CONFIG_CRYPTO_AES=y CONFIG_CRYPTO_DES=y CONFIG_CRYPTO_CTS=m From d2415007d82e9410c3b37495c18246ad4af22dbb Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Sun, 13 Mar 2022 10:36:38 +0100 Subject: [PATCH 16/32] config-mpi. Disable CONFIG_MODULE_SIG --- config-mpi | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/config-mpi b/config-mpi index 2ccda977210b3..c4e16a9376095 100644 --- a/config-mpi +++ b/config-mpi @@ -70,7 +70,6 @@ CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y CONFIG_MODULE_FORCE_UNLOAD=y CONFIG_MODVERSIONS=y -CONFIG_MODULE_SIG=y CONFIG_BLK_DEV_INTEGRITY=y CONFIG_BLK_DEV_THROTTLING=y CONFIG_BLK_CGROUP_IOCOST=y @@ -807,6 +806,7 @@ CONFIG_NLS_UTF8=m CONFIG_DLM=m CONFIG_SECURITY=y CONFIG_SECURITYFS=y +CONFIG_CRYPTO_RSA=y CONFIG_CRYPTO_AES=y CONFIG_CRYPTO_DES=y CONFIG_CRYPTO_CTS=m @@ -815,7 +815,12 @@ CONFIG_CRYPTO_PCBC=y CONFIG_CRYPTO_CMAC=y CONFIG_CRYPTO_HMAC=y CONFIG_CRYPTO_MD4=y +CONFIG_CRYPTO_SHA1=y CONFIG_CRYPTO_SHA256=y +CONFIG_ASYMMETRIC_KEY_TYPE=y +CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y +CONFIG_X509_CERTIFICATE_PARSER=y +CONFIG_PKCS7_MESSAGE_PARSER=y CONFIG_CRC16=y CONFIG_CRC_ITU_T=y CONFIG_FONTS=y From 19e0fede9ed6fda6641e3d7ce26cdb9bbeb7b3a5 Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Sun, 13 Mar 2022 10:48:15 +0100 Subject: [PATCH 17/32] config-mpi: Switch more settings to M After the last commit, a few settings are no longer required to be static, so set them to M. --- config-mpi | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/config-mpi b/config-mpi index c4e16a9376095..d6b3d3fce65d7 100644 --- a/config-mpi +++ b/config-mpi @@ -818,9 +818,9 @@ CONFIG_CRYPTO_MD4=y CONFIG_CRYPTO_SHA1=y CONFIG_CRYPTO_SHA256=y CONFIG_ASYMMETRIC_KEY_TYPE=y -CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y -CONFIG_X509_CERTIFICATE_PARSER=y -CONFIG_PKCS7_MESSAGE_PARSER=y +CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=m +CONFIG_X509_CERTIFICATE_PARSER=m +CONFIG_PKCS7_MESSAGE_PARSER=m CONFIG_CRC16=y CONFIG_CRC_ITU_T=y CONFIG_FONTS=y From 4855628501530891bf1329fa50a54a83a10b1036 Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Sun, 13 Mar 2022 10:59:20 +0100 Subject: [PATCH 18/32] config-mpi: Disable SECURITY What a nice commit title :-) SECURITY is "Enable different security models". The only security model enable (by default) is "Integrity subsystem" - "Integrity auditing support" and I don't think we need that. --- config-mpi | 1 - 1 file changed, 1 deletion(-) diff --git a/config-mpi b/config-mpi index d6b3d3fce65d7..4eb37da100743 100644 --- a/config-mpi +++ b/config-mpi @@ -804,7 +804,6 @@ CONFIG_NLS_CODEPAGE_852=m CONFIG_NLS_ISO8859_1=m CONFIG_NLS_UTF8=m CONFIG_DLM=m -CONFIG_SECURITY=y CONFIG_SECURITYFS=y CONFIG_CRYPTO_RSA=y CONFIG_CRYPTO_AES=y From 8717aa8ac14ed0da293d1a22feefaeb9e21e86de Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Tue, 20 Sep 2022 14:57:42 +0200 Subject: [PATCH 19/32] config-mpi: Increase NR_CPUS from 256 to 512 Increase maximum number of CPUs, because we have reached the old limit already. --- config-mpi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config-mpi b/config-mpi index 4eb37da100743..230a983dd53d2 100644 --- a/config-mpi +++ b/config-mpi @@ -41,7 +41,7 @@ CONFIG_BLK_DEV_INITRD=y CONFIG_SMP=y CONFIG_X86_X2APIC=y CONFIG_GART_IOMMU=y -CONFIG_NR_CPUS=256 +CONFIG_NR_CPUS=512 CONFIG_X86_MCELOG_LEGACY=y CONFIG_MICROCODE_AMD=y CONFIG_X86_MSR=m From 36ae2aac20cea384ac8557b4c2a394ff539d32f4 Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Tue, 20 Sep 2022 17:36:39 +0200 Subject: [PATCH 20/32] genhd: Supress "detected capacity change" message If we use the loop device in the cluster we don't want one syslog message per job. --- block/genhd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/block/genhd.c b/block/genhd.c index 17b33c62423df..debbab33c2a5b 100644 --- a/block/genhd.c +++ b/block/genhd.c @@ -87,7 +87,7 @@ bool set_capacity_and_notify(struct gendisk *disk, sector_t size) (disk->flags & GENHD_FL_HIDDEN)) return false; - pr_info("%s: detected capacity change from %lld to %lld\n", + if (0) pr_info("%s: detected capacity change from %lld to %lld\n", disk->disk_name, capacity, size); /* From 2d84cb3c23e16c05cb3c83aa1319c424137817e8 Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Wed, 28 Sep 2022 13:41:36 +0200 Subject: [PATCH 21/32] ext4: Suppress sporadic error messages Supress the sporadic "ext4_writepages: jbd2_start: XXX pages, ino YYY; err -5" warnings we sometimes get when mxqd tries to unmount the temporary job filesystems using - fcntl EXT4_IOC_SHUTDOWN with EXT4_GOING_FLAGS_NOLOGFLUSH - dmestup reload $dmname --table "0 $sectors zero" - dmsetup resume $dmname --noflush - umount $mountpoint - dmsetup remove --deferred $dmname - rmdir $mountpoint --- fs/ext4/inode.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 2b5ef1b642499..84d2659b6eeef 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -2818,9 +2818,10 @@ static int ext4_writepages(struct address_space *mapping, EXT4_HT_WRITE_PAGE, needed_blocks, rsv_blocks); if (IS_ERR(handle)) { ret = PTR_ERR(handle); - ext4_msg(inode->i_sb, KERN_CRIT, "%s: jbd2_start: " - "%ld pages, ino %lu; err %d", __func__, - wbc->nr_to_write, inode->i_ino, ret); + if (!unlikely(ext4_forced_shutdown(EXT4_SB(inode->i_sb)))) + ext4_msg(inode->i_sb, KERN_CRIT, "%s: jbd2_start: " + "%ld pages, ino %lu; err %d", __func__, + wbc->nr_to_write, inode->i_ino, ret); /* Release allocated io_end */ ext4_put_io_end(mpd.io_submit.io_end); mpd.io_submit.io_end = NULL; From bd75da538ca9300c37f40da58e1395403b1c0a23 Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Tue, 20 Sep 2022 16:17:22 +0200 Subject: [PATCH 22/32] ext4: Avoid writeback path when fs is shut down Patch suggtestd by Teodore Ts'o in https://lore.kernel.org/linux-ext4/4e83fb26-4d4a-d482-640c-8104973b7ebf@molgen.mpg.de/T/#u to avoid the error EXT4-fs (dm-0): ext4_writepages: jbd2_start: 5120 pages, ino 11; err -5 which sometimed occurs, when we set the fs to EXT4_IOC_SHUTDOWN+EXT4_GOING_FLAGS_NOLOGFLUSH --- fs/ext4/super.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/fs/ext4/super.c b/fs/ext4/super.c index c0b90e7a22dcd..7a13bc1055217 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c @@ -536,6 +536,10 @@ static int ext4_journalled_submit_inode_data_buffers(struct jbd2_inode *jinode) static int ext4_journal_submit_inode_data_buffers(struct jbd2_inode *jinode) { int ret; + journal_t *journal = EXT4_SB(jinode->i_vfs_inode->i_sb)->s_journal; + + if (!journal || is_journal_aborted(journal)) + return 0; if (ext4_should_journal_data(jinode->i_vfs_inode)) ret = ext4_journalled_submit_inode_data_buffers(jinode); @@ -548,6 +552,10 @@ static int ext4_journal_submit_inode_data_buffers(struct jbd2_inode *jinode) static int ext4_journal_finish_inode_data_buffers(struct jbd2_inode *jinode) { int ret = 0; + journal_t *journal = EXT4_SB(jinode->i_vfs_inode->i_sb)->s_journal; + + if (!journal || is_journal_aborted(journal)) + return 0; if (!ext4_should_journal_data(jinode->i_vfs_inode)) ret = jbd2_journal_finish_inode_data_buffers(jinode); From 40e2c99c290c6bba7b476a6efc3421e0e1191aa9 Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Tue, 1 Nov 2022 10:16:13 +0100 Subject: [PATCH 23/32] config: Add TPM driver Add TCG_TPM drivers as module so that we can play around with it. This might be part of the solution of our nfs trust. CONFIG_SECURITYFS becomes autoselected, so it is removed from the config. --- config-mpi | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/config-mpi b/config-mpi index 230a983dd53d2..d3cd2684b2367 100644 --- a/config-mpi +++ b/config-mpi @@ -575,6 +575,18 @@ CONFIG_IPMI_SI=m CONFIG_IPMI_WATCHDOG=m CONFIG_IPMI_POWEROFF=m CONFIG_HPET=y +CONFIG_TCG_TPM=m +CONFIG_TCG_TIS=m +CONFIG_TCG_TIS_I2C_CR50=m +CONFIG_TCG_TIS_I2C_ATMEL=m +CONFIG_TCG_TIS_I2C_INFINEON=m +CONFIG_TCG_TIS_I2C_NUVOTON=m +CONFIG_TCG_NSC=m +CONFIG_TCG_ATMEL=m +CONFIG_TCG_INFINEON=m +CONFIG_TCG_CRB=m +CONFIG_TCG_VTPM_PROXY=m +CONFIG_TCG_TIS_ST33ZP24_I2C=m CONFIG_I2C_CHARDEV=m CONFIG_I2C_AMD756=m CONFIG_I2C_AMD756_S4882=m @@ -804,7 +816,6 @@ CONFIG_NLS_CODEPAGE_852=m CONFIG_NLS_ISO8859_1=m CONFIG_NLS_UTF8=m CONFIG_DLM=m -CONFIG_SECURITYFS=y CONFIG_CRYPTO_RSA=y CONFIG_CRYPTO_AES=y CONFIG_CRYPTO_DES=y From b288ec29c9d3bdbb9874bad74feffd5d3939be5e Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Tue, 8 Nov 2022 12:53:41 +0100 Subject: [PATCH 24/32] nfs/nfsd/rpc: Add AUTH_MARIUX --- fs/nfs/fs_context.c | 5 ++ fs/nfs/nfs4namespace.c | 1 + fs/nfs/nfs4proc.c | 1 + fs/nfsd/export.c | 3 +- include/linux/sunrpc/auth.h | 1 + include/linux/sunrpc/msg_prot.h | 3 +- include/linux/sunrpc/xdr.h | 1 + net/sunrpc/auth.c | 3 +- net/sunrpc/auth_unix.c | 108 ++++++++++++++++++++++++++++++++ net/sunrpc/svcauth.c | 2 + net/sunrpc/svcauth_unix.c | 19 +++++- 11 files changed, 143 insertions(+), 4 deletions(-) diff --git a/fs/nfs/fs_context.c b/fs/nfs/fs_context.c index 9bcd53d5c7d46..b4eeff8f62f29 100644 --- a/fs/nfs/fs_context.c +++ b/fs/nfs/fs_context.c @@ -243,6 +243,7 @@ enum { Opt_sec_lkey, Opt_sec_lkeyi, Opt_sec_lkeyp, + Opt_sec_mariux, Opt_sec_none, Opt_sec_spkm, Opt_sec_spkmi, @@ -258,6 +259,7 @@ static const struct constant_table nfs_secflavor_tokens[] = { { "lkey", Opt_sec_lkey }, { "lkeyi", Opt_sec_lkeyi }, { "lkeyp", Opt_sec_lkeyp }, + { "mariux", Opt_sec_mariux }, { "none", Opt_sec_none }, { "null", Opt_sec_none }, { "spkm3", Opt_sec_spkm }, @@ -418,6 +420,9 @@ static int nfs_parse_security_flavors(struct fs_context *fc, case Opt_sec_spkmp: pseudoflavor = RPC_AUTH_GSS_SPKMP; break; + case Opt_sec_mariux: + pseudoflavor = RPC_AUTH_MARIUX; + break; default: return nfs_invalf(fc, "NFS: sec=%s option not recognized", p); } diff --git a/fs/nfs/nfs4namespace.c b/fs/nfs/nfs4namespace.c index 9a98595bb1604..0da08d26b4189 100644 --- a/fs/nfs/nfs4namespace.c +++ b/fs/nfs/nfs4namespace.c @@ -215,6 +215,7 @@ static struct rpc_clnt *nfs_find_best_sec(struct rpc_clnt *clnt, switch (secinfo->flavor) { case RPC_AUTH_NULL: case RPC_AUTH_UNIX: + case RPC_AUTH_MARIUX: case RPC_AUTH_GSS: pflavor = rpcauth_get_pseudoflavor(secinfo->flavor, &secinfo->flavor_info); diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index e51044a5f550f..63c5e36871a1f 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c @@ -10167,6 +10167,7 @@ nfs41_find_root_sec(struct nfs_server *server, struct nfs_fh *fhandle, switch (secinfo->flavor) { case RPC_AUTH_NULL: case RPC_AUTH_UNIX: + case RPC_AUTH_MARIUX: case RPC_AUTH_GSS: flavor = rpcauth_get_pseudoflavor(secinfo->flavor, &secinfo->flavor_info); diff --git a/fs/nfsd/export.c b/fs/nfsd/export.c index 668c7527b17e8..5f313f6e4d62b 100644 --- a/fs/nfsd/export.c +++ b/fs/nfsd/export.c @@ -1049,7 +1049,8 @@ __be32 check_nfsd_access(struct svc_export *exp, struct svc_rqst *rqstp) /* defaults in absence of sec= options: */ if (exp->ex_nflavors == 0) { if (rqstp->rq_cred.cr_flavor == RPC_AUTH_NULL || - rqstp->rq_cred.cr_flavor == RPC_AUTH_UNIX) + rqstp->rq_cred.cr_flavor == RPC_AUTH_UNIX || + rqstp->rq_cred.cr_flavor == RPC_AUTH_MARIUX) return 0; } diff --git a/include/linux/sunrpc/auth.h b/include/linux/sunrpc/auth.h index 3e6ce288a7fc0..47daed9707927 100644 --- a/include/linux/sunrpc/auth.h +++ b/include/linux/sunrpc/auth.h @@ -143,6 +143,7 @@ struct rpc_credops { }; extern const struct rpc_authops authunix_ops; +extern const struct rpc_authops authmariux_ops; extern const struct rpc_authops authnull_ops; int __init rpc_init_authunix(void); diff --git a/include/linux/sunrpc/msg_prot.h b/include/linux/sunrpc/msg_prot.h index 02117ed0fa2ee..f346754c7f291 100644 --- a/include/linux/sunrpc/msg_prot.h +++ b/include/linux/sunrpc/msg_prot.h @@ -21,7 +21,8 @@ enum rpc_auth_flavors { RPC_AUTH_KRB = 4, RPC_AUTH_GSS = 6, RPC_AUTH_TLS = 7, - RPC_AUTH_MAXFLAVOR = 8, + RPC_AUTH_MARIUX = 8, + RPC_AUTH_MAXFLAVOR = 9, /* pseudoflavors: */ RPC_AUTH_GSS_KRB5 = 390003, RPC_AUTH_GSS_KRB5I = 390004, diff --git a/include/linux/sunrpc/xdr.h b/include/linux/sunrpc/xdr.h index f84e2a1358e17..33019acf06c98 100644 --- a/include/linux/sunrpc/xdr.h +++ b/include/linux/sunrpc/xdr.h @@ -96,6 +96,7 @@ xdr_buf_init(struct xdr_buf *buf, void *start, size_t len) #define rpc_auth_short cpu_to_be32(RPC_AUTH_SHORT) #define rpc_auth_gss cpu_to_be32(RPC_AUTH_GSS) #define rpc_auth_tls cpu_to_be32(RPC_AUTH_TLS) +#define rpc_auth_mariux cpu_to_be32(RPC_AUTH_MARIUX) #define rpc_call cpu_to_be32(RPC_CALL) #define rpc_reply cpu_to_be32(RPC_REPLY) diff --git a/net/sunrpc/auth.c b/net/sunrpc/auth.c index fb75a883503f7..789b56413c994 100644 --- a/net/sunrpc/auth.c +++ b/net/sunrpc/auth.c @@ -29,9 +29,10 @@ struct rpc_cred_cache { static unsigned int auth_hashbits = RPC_CREDCACHE_DEFAULT_HASHBITS; -static const struct rpc_authops __rcu *auth_flavors[RPC_AUTH_MAXFLAVOR] = { +static const struct rpc_authops __rcu *auth_flavors[RPC_AUTH_MAXFLAVOR+1] = { [RPC_AUTH_NULL] = (const struct rpc_authops __force __rcu *)&authnull_ops, [RPC_AUTH_UNIX] = (const struct rpc_authops __force __rcu *)&authunix_ops, + [RPC_AUTH_MARIUX] = (const struct rpc_authops __force __rcu *)&authmariux_ops, NULL, /* others can be loadable modules */ }; diff --git a/net/sunrpc/auth_unix.c b/net/sunrpc/auth_unix.c index 1e091d3fa6070..d9bb504a120fc 100644 --- a/net/sunrpc/auth_unix.c +++ b/net/sunrpc/auth_unix.c @@ -22,7 +22,9 @@ #endif static struct rpc_auth unix_auth; +static struct rpc_auth mariux_auth; static const struct rpc_credops unix_credops; +static const struct rpc_credops mariux_credops; static mempool_t *unix_pool; static struct rpc_auth * @@ -37,6 +39,18 @@ unx_destroy(struct rpc_auth *auth) { } +static struct rpc_auth * +mariux_create(const struct rpc_auth_create_args *args, struct rpc_clnt *clnt) +{ + refcount_inc(&mariux_auth.au_count); + return &mariux_auth; +} + +static void +mariux_destroy(struct rpc_auth *auth) +{ +} + /* * Lookup AUTH_UNIX creds for current process */ @@ -58,6 +72,16 @@ static struct rpc_cred *unx_lookup_cred(struct rpc_auth *auth, return ret; } +static struct rpc_cred * +mariux_lookup_cred(struct rpc_auth *auth, struct auth_cred *acred, int flags) +{ + struct rpc_cred *ret = mempool_alloc(unix_pool, GFP_NOFS); + + rpcauth_init_cred(ret, acred, auth, &mariux_credops); + ret->cr_flags = 1UL << RPCAUTH_CRED_UPTODATE; + return ret; +} + static void unx_free_cred_callback(struct rcu_head *head) { @@ -159,6 +183,58 @@ unx_marshal(struct rpc_task *task, struct xdr_stream *xdr) return -EMSGSIZE; } +static int +mariux_marshal(struct rpc_task *task, struct xdr_stream *xdr) +{ + struct rpc_clnt *clnt = task->tk_client; + struct rpc_cred *cred = task->tk_rqstp->rq_cred; + __be32 *p, *cred_len, *gidarr_len; + int i; + struct group_info *gi = cred->cr_cred->group_info; + struct user_namespace *userns = clnt->cl_cred ? + clnt->cl_cred->user_ns : &init_user_ns; + + /* Credential */ + + p = xdr_reserve_space(xdr, 3 * sizeof(*p)); + if (!p) + goto marshal_failed; + *p++ = rpc_auth_mariux; + cred_len = p++; + *p++ = cpu_to_be32(0x00010012); /* version 1.18 */ + if (xdr_stream_encode_opaque(xdr, clnt->cl_nodename, + clnt->cl_nodelen) < 0) + goto marshal_failed; + p = xdr_reserve_space(xdr, 3 * sizeof(*p)); + if (!p) + goto marshal_failed; + *p++ = cpu_to_be32(from_kuid_munged(userns, cred->cr_cred->fsuid)); + *p++ = cpu_to_be32(from_kgid_munged(userns, cred->cr_cred->fsgid)); + + gidarr_len = p++; + if (gi) + for (i = 0; i < UNX_NGROUPS && i < gi->ngroups; i++) + *p++ = cpu_to_be32(from_kgid_munged(userns, gi->gid[i])); + *gidarr_len = cpu_to_be32(p - gidarr_len - 1); + *cred_len = cpu_to_be32((p - cred_len - 1) << 2); + p = xdr_reserve_space(xdr, (p - gidarr_len - 1) << 2); + if (!p) + goto marshal_failed; + + /* Verifier */ + + p = xdr_reserve_space(xdr, 2 * sizeof(*p)); + if (!p) + goto marshal_failed; + *p++ = rpc_auth_null; + *p = xdr_zero; + + return 0; + +marshal_failed: + return -EMSGSIZE; +} + /* * Refresh credentials. This is a no-op for AUTH_UNIX */ @@ -183,6 +259,7 @@ unx_validate(struct rpc_task *task, struct xdr_stream *xdr) case rpc_auth_null: case rpc_auth_unix: case rpc_auth_short: + case rpc_auth_mariux: break; default: return -EIO; @@ -241,3 +318,34 @@ const struct rpc_credops unix_credops = { .crvalidate = unx_validate, .crunwrap_resp = rpcauth_unwrap_resp_decode, }; + +const struct rpc_authops authmariux_ops = { + .owner = THIS_MODULE, + .au_flavor = RPC_AUTH_MARIUX, + .au_name = "MARIUX", + .create = mariux_create, + .destroy = mariux_destroy, + .lookup_cred = mariux_lookup_cred, +}; + +static +struct rpc_auth mariux_auth = { + .au_cslack = UNX_CALLSLACK, + .au_rslack = NUL_REPLYSLACK, + .au_verfsize = NUL_REPLYSLACK, + .au_ops = &authmariux_ops, + .au_flavor = RPC_AUTH_MARIUX, + .au_count = REFCOUNT_INIT(1), +}; + +static +const struct rpc_credops mariux_credops = { + .cr_name = "AUTH_MARIUX", + .crdestroy = unx_destroy_cred, + .crmatch = unx_match, + .crmarshal = mariux_marshal, + .crwrap_req = rpcauth_wrap_req_encode, + .crrefresh = unx_refresh, + .crvalidate = unx_validate, + .crunwrap_resp = rpcauth_unwrap_resp_decode, +}; diff --git a/net/sunrpc/svcauth.c b/net/sunrpc/svcauth.c index e72ba2f13f6c6..08e673a933e56 100644 --- a/net/sunrpc/svcauth.c +++ b/net/sunrpc/svcauth.c @@ -32,11 +32,13 @@ extern struct auth_ops svcauth_null; extern struct auth_ops svcauth_unix; extern struct auth_ops svcauth_tls; +extern struct auth_ops svcauth_mariux; static struct auth_ops __rcu *authtab[RPC_AUTH_MAXFLAVOR] = { [RPC_AUTH_NULL] = (struct auth_ops __force __rcu *)&svcauth_null, [RPC_AUTH_UNIX] = (struct auth_ops __force __rcu *)&svcauth_unix, [RPC_AUTH_TLS] = (struct auth_ops __force __rcu *)&svcauth_tls, + [RPC_AUTH_MARIUX] = (struct auth_ops __force __rcu *)&svcauth_mariux, }; static struct auth_ops * diff --git a/net/sunrpc/svcauth_unix.c b/net/sunrpc/svcauth_unix.c index b1efc34db6ed8..f5bbd671e81a2 100644 --- a/net/sunrpc/svcauth_unix.c +++ b/net/sunrpc/svcauth_unix.c @@ -907,6 +907,14 @@ svcauth_unix_accept(struct svc_rqst *rqstp) return SVC_DENIED; } +static int +svcauth_mariux_accept(struct svc_rqst *rqstp) +{ + int ret = svcauth_unix_accept(rqstp); + rqstp->rq_cred.cr_flavor = RPC_AUTH_MARIUX; + return ret; +} + static int svcauth_unix_release(struct svc_rqst *rqstp) { @@ -922,7 +930,6 @@ svcauth_unix_release(struct svc_rqst *rqstp) return 0; } - struct auth_ops svcauth_unix = { .name = "unix", .owner = THIS_MODULE, @@ -933,6 +940,16 @@ struct auth_ops svcauth_unix = { .set_client = svcauth_unix_set_client, }; +struct auth_ops svcauth_mariux = { + .name = "unix", + .owner = THIS_MODULE, + .flavour = RPC_AUTH_MARIUX, + .accept = svcauth_mariux_accept, + .release = svcauth_unix_release, + .domain_release = svcauth_unix_domain_release, + .set_client = svcauth_unix_set_client, +}; + static const struct cache_detail ip_map_cache_template = { .owner = THIS_MODULE, .hash_size = IP_HASHMAX, From b59a1139286a2f812c97f79d38ae45ed6a16d286 Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Thu, 10 Nov 2022 13:03:28 +0100 Subject: [PATCH 25/32] sunrpc: Fix name in svcauth_mariux struct Use name "mariux" instead of "unix" in the svcauth_mariux auth_ops structure. This field is not used by the kernel. --- net/sunrpc/svcauth_unix.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/sunrpc/svcauth_unix.c b/net/sunrpc/svcauth_unix.c index f5bbd671e81a2..1385ed2064ac0 100644 --- a/net/sunrpc/svcauth_unix.c +++ b/net/sunrpc/svcauth_unix.c @@ -941,7 +941,7 @@ struct auth_ops svcauth_unix = { }; struct auth_ops svcauth_mariux = { - .name = "unix", + .name = "mariux", .owner = THIS_MODULE, .flavour = RPC_AUTH_MARIUX, .accept = svcauth_mariux_accept, From b95bd7fa019854a4d55a4d1163132b8180215ce2 Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Wed, 4 Jan 2023 11:15:32 +0100 Subject: [PATCH 26/32] nfs: Add "mariux" to nfs_pseudoflavour_to_name --- fs/nfs/super.c | 1 + include/linux/nfs_xdr.h | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/fs/nfs/super.c b/fs/nfs/super.c index 05ae23657527d..27fd4adf0080b 100644 --- a/fs/nfs/super.c +++ b/fs/nfs/super.c @@ -312,6 +312,7 @@ static const char *nfs_pseudoflavour_to_name(rpc_authflavor_t flavour) /* update NFS_AUTH_INFO_MAX_FLAVORS when this list changes! */ { RPC_AUTH_NULL, "null" }, { RPC_AUTH_UNIX, "sys" }, + { RPC_AUTH_MARIUX, "mariux" }, { RPC_AUTH_GSS_KRB5, "krb5" }, { RPC_AUTH_GSS_KRB5I, "krb5i" }, { RPC_AUTH_GSS_KRB5P, "krb5p" }, diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h index e86cf6642d212..c253c2c3af617 100644 --- a/include/linux/nfs_xdr.h +++ b/include/linux/nfs_xdr.h @@ -734,7 +734,7 @@ struct nfs_renameres { }; /* parsed sec= options */ -#define NFS_AUTH_INFO_MAX_FLAVORS 12 /* see fs/nfs/super.c */ +#define NFS_AUTH_INFO_MAX_FLAVORS 13 /* see fs/nfs/super.c */ struct nfs_auth_info { unsigned int flavor_len; rpc_authflavor_t flavors[NFS_AUTH_INFO_MAX_FLAVORS]; From be893b074ffc7a6c3032de44f8422f899285c5c1 Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Wed, 4 Jan 2023 15:08:59 +0100 Subject: [PATCH 27/32] config-mpi: Disable FB_MATROX Disable FB_MATROX as requested in [1] [1]: https://github.molgen.mpg.de/mariux64/bee-files/pull/2816 --- config-mpi | 5 ----- 1 file changed, 5 deletions(-) diff --git a/config-mpi b/config-mpi index d3cd2684b2367..b89f4a6d196d4 100644 --- a/config-mpi +++ b/config-mpi @@ -653,11 +653,6 @@ CONFIG_FB_NVIDIA_DEBUG=y CONFIG_FB_I740=m CONFIG_FB_LE80578=m CONFIG_FB_CARILLO_RANCH=m -CONFIG_FB_MATROX=m -CONFIG_FB_MATROX_MILLENIUM=y -CONFIG_FB_MATROX_MYSTIQUE=y -CONFIG_FB_MATROX_G=y -CONFIG_FB_MATROX_I2C=m CONFIG_FB_RADEON=m CONFIG_FB_RADEON_DEBUG=y CONFIG_FB_SMSCUFX=m From 9eef7a0e3dacb6192175f028f08d9dae11d0ef3f Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Wed, 4 Jan 2023 15:13:12 +0100 Subject: [PATCH 28/32] config-mpi: Enable SENSORS_CORETEMP Enable SENSORS_CORETEMP as requested in [1] [1]: https://github.molgen.mpg.de/mariux64/bee-files/issues/2817 --- config-mpi | 1 + 1 file changed, 1 insertion(+) diff --git a/config-mpi b/config-mpi index b89f4a6d196d4..78aa610d556d8 100644 --- a/config-mpi +++ b/config-mpi @@ -605,6 +605,7 @@ CONFIG_GPIOLIB=y CONFIG_SENSORS_K8TEMP=m CONFIG_SENSORS_K10TEMP=m CONFIG_SENSORS_FAM15H_POWER=m +CONFIG_SENSORS_CORETEMP=m CONFIG_WATCHDOG=y CONFIG_WATCHDOG_CORE=y CONFIG_I6300ESB_WDT=m From 586738b48ae928d066ebd26682db0c2b9471b71c Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Thu, 5 Jan 2023 11:32:43 +0100 Subject: [PATCH 29/32] nfsd: Do no try to use idmapd for sec=mariux When the nfsd module parameter nfs4_disable_idmapping ist set, which is the default, than a user space idmapd is not required for AUTH_UNIX. The code used in nfsd to check whether the idmap cache and user space daemon should be used is if (nfs4_disable_idmapping && rqstp->rq_cred.cr_flavor < RPC_AUTH_GSS) However, we've added our own security flavor AUTH_MARIUX numerically after AUTH_GSS: enum rpc_auth_flavors { RPC_AUTH_NULL = 0, RPC_AUTH_UNIX = 1, RPC_AUTH_SHORT = 2, RPC_AUTH_DES = 3, RPC_AUTH_KRB = 4, RPC_AUTH_GSS = 6, RPC_AUTH_TLS = 7, RPC_AUTH_MARIUX = 8, RPC_AUTH_MAXFLAVOR = 9, /* pseudoflavors: */ RPC_AUTH_GSS_KRB5 = 390003, RPC_AUTH_GSS_KRB5I = 390004, RPC_AUTH_GSS_KRB5P = 390005, RPC_AUTH_GSS_LKEY = 390006, RPC_AUTH_GSS_LKEYI = 390007, RPC_AUTH_GSS_LKEYP = 390008, RPC_AUTH_GSS_SPKM = 390009, RPC_AUTH_GSS_SPKMI = 390010, RPC_AUTH_GSS_SPKMP = 390011, }; So the check fails for AUTH_MARIUX. Although it can and should work with numerical idents from the client, nfsd tries to use idmapd and this fails for certain operations, because we don't start idmapd in our environment Explicitly allow RPC_AUTH_MARIUX to be used without idmapd. --- fs/nfsd/nfs4idmap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/nfsd/nfs4idmap.c b/fs/nfsd/nfs4idmap.c index e70a1a2999b7b..dac09e2c22a28 100644 --- a/fs/nfsd/nfs4idmap.c +++ b/fs/nfsd/nfs4idmap.c @@ -619,7 +619,7 @@ numeric_name_to_id(struct svc_rqst *rqstp, int type, const char *name, u32 namel static __be32 do_name_to_id(struct svc_rqst *rqstp, int type, const char *name, u32 namelen, u32 *id) { - if (nfs4_disable_idmapping && rqstp->rq_cred.cr_flavor < RPC_AUTH_GSS) + if (nfs4_disable_idmapping && (rqstp->rq_cred.cr_flavor < RPC_AUTH_GSS || rqstp->rq_cred.cr_flavor == RPC_AUTH_MARIUX)) if (numeric_name_to_id(rqstp, type, name, namelen, id)) return 0; /* @@ -632,7 +632,7 @@ do_name_to_id(struct svc_rqst *rqstp, int type, const char *name, u32 namelen, u static __be32 encode_name_from_id(struct xdr_stream *xdr, struct svc_rqst *rqstp, int type, u32 id) { - if (nfs4_disable_idmapping && rqstp->rq_cred.cr_flavor < RPC_AUTH_GSS) + if (nfs4_disable_idmapping && (rqstp->rq_cred.cr_flavor < RPC_AUTH_GSS || rqstp->rq_cred.cr_flavor == RPC_AUTH_MARIUX)) return encode_ascii_id(xdr, id); return idmap_id_to_name(xdr, rqstp, type, id); } From 44bd66fcd9fed2563b1080b8f6722a6540778d38 Mon Sep 17 00:00:00 2001 From: Kees Cook Date: Thu, 12 Jan 2023 15:03:16 -0800 Subject: [PATCH 30/32] firmware: coreboot: Check size of table entry and use flex-array The memcpy() of the data following a coreboot_table_entry couldn't be evaluated by the compiler under CONFIG_FORTIFY_SOURCE. To make it easier to reason about, add an explicit flexible array member to struct coreboot_device so the entire entry can be copied at once. Additionally, validate the sizes before copying. Avoids this run-time false positive warning: memcpy: detected field-spanning write (size 168) of single field "&device->entry" at drivers/firmware/google/coreboot_table.c:103 (size 8) Reported-by: Paul Menzel Link: https://lore.kernel.org/all/03ae2704-8c30-f9f0-215b-7cdf4ad35a9a@molgen.mpg.de/ Cc: Jack Rosenthal Cc: Guenter Roeck Cc: Julius Werner Cc: Brian Norris Cc: Stephen Boyd Cc: Greg Kroah-Hartman Signed-off-by: Kees Cook Reviewed-by: Julius Werner Reviewed-by: Guenter Roeck Link: https://lore.kernel.org/r/20230107031406.gonna.761-kees@kernel.org Reviewed-by: Stephen Boyd Reviewed-by: Jack Rosenthal Link: https://lore.kernel.org/r/20230112230312.give.446-kees@kernel.org --- drivers/firmware/google/coreboot_table.c | 9 +++++++-- drivers/firmware/google/coreboot_table.h | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/firmware/google/coreboot_table.c b/drivers/firmware/google/coreboot_table.c index 9ca21feb9d454..f3694d3478019 100644 --- a/drivers/firmware/google/coreboot_table.c +++ b/drivers/firmware/google/coreboot_table.c @@ -93,7 +93,12 @@ static int coreboot_table_populate(struct device *dev, void *ptr) for (i = 0; i < header->table_entries; i++) { entry = ptr_entry; - device = kzalloc(sizeof(struct device) + entry->size, GFP_KERNEL); + if (entry->size < sizeof(*entry)) { + dev_warn(dev, "coreboot table entry too small!\n"); + return -EINVAL; + } + + device = kzalloc(sizeof(device->dev) + entry->size, GFP_KERNEL); if (!device) return -ENOMEM; @@ -101,7 +106,7 @@ static int coreboot_table_populate(struct device *dev, void *ptr) device->dev.parent = dev; device->dev.bus = &coreboot_bus_type; device->dev.release = coreboot_device_release; - memcpy(&device->entry, ptr_entry, entry->size); + memcpy(device->raw, ptr_entry, entry->size); ret = device_register(&device->dev); if (ret) { diff --git a/drivers/firmware/google/coreboot_table.h b/drivers/firmware/google/coreboot_table.h index beb778674acdc..4a89277b99a39 100644 --- a/drivers/firmware/google/coreboot_table.h +++ b/drivers/firmware/google/coreboot_table.h @@ -66,6 +66,7 @@ struct coreboot_device { struct coreboot_table_entry entry; struct lb_cbmem_ref cbmem_ref; struct lb_framebuffer framebuffer; + DECLARE_FLEX_ARRAY(u8, raw); }; }; From 470ca48206dd4a524897b77b54bb70b65ad1d48f Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Wed, 18 Jan 2023 15:51:49 +0100 Subject: [PATCH 31/32] nfs: Do not try to use idmap for sec=mariux Currently, operations which send uid or gid attributes (e.g. chgrp) try to use idmap which results warnings like "Request-key: Cannot find command to construct key 322998654" in the syslog, because we don't have id_resolver configured in /etc/requesst-key.conf. When the idmap operation fails, the uid of gid are send numerical, so there is no problem aside from the log message. Allow idmapping to be disabled for RPC_AITH_MARIUX just as for RPC_AUTH_UNIX. --- fs/nfs/nfs4client.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/fs/nfs/nfs4client.c b/fs/nfs/nfs4client.c index d3051b051a564..d8316081c56fe 100644 --- a/fs/nfs/nfs4client.c +++ b/fs/nfs/nfs4client.c @@ -1073,8 +1073,9 @@ void nfs4_server_set_init_caps(struct nfs_server *server) * Don't use NFS uid/gid mapping if we're using AUTH_SYS or lower * authentication. */ - if (nfs4_disable_idmapping && - server->client->cl_auth->au_flavor == RPC_AUTH_UNIX) + if (nfs4_disable_idmapping && ( + server->client->cl_auth->au_flavor == RPC_AUTH_UNIX + || server->client->cl_auth->au_flavor == RPC_AUTH_MARIUX )) server->caps |= NFS_CAP_UIDGID_NOMAP; } From 68c0174f8a5f6344c6d0a05619d1373f60531b51 Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Sun, 12 Mar 2023 04:31:19 +0100 Subject: [PATCH 32/32] config-mpi: Update for new kernel version --- config-mpi | 1 - 1 file changed, 1 deletion(-) diff --git a/config-mpi b/config-mpi index 78aa610d556d8..b83cab48b18b3 100644 --- a/config-mpi +++ b/config-mpi @@ -356,7 +356,6 @@ CONFIG_NET_SCH_HHF=m CONFIG_NET_SCH_PIE=m CONFIG_NET_SCH_PLUG=m CONFIG_NET_CLS_BASIC=m -CONFIG_NET_CLS_TCINDEX=m CONFIG_NET_CLS_ROUTE4=m CONFIG_NET_CLS_FW=m CONFIG_NET_CLS_U32=m