Use of uninitialized value $line in pattern match
diff mbox

Message ID 1520305238.25605.39.camel@perches.com
State New
Headers show

Commit Message

Joe Perches March 6, 2018, 3 a.m. UTC
On Mon, 2018-03-05 at 16:06 -0500, Chuck Lever wrote:
> I think I'm seeing a parsing error in v4.16-rc4 scripts/checkpatch.pl:

What I see is your patch is corrupt as the first
char of the first context line of the actual patch
		goto encode_op;
does not have a leading space but has a tab.

When I run the below I get the expected output (nothing)
---
nfsd: Trace NFSv4 COMPOUND execution

This helps record the identity and timing of the ops in each NFSv4
COMPOUND, replacing dprintk calls that did much the same thing.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
---
fs/nfsd/nfs4proc.c |    9 +++------
fs/nfsd/trace.h    |   39 +++++++++++++++++++++++++++++++++++++++
2 files changed, 42 insertions(+), 6 deletions(-)


--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Chuck Lever March 6, 2018, 3:02 p.m. UTC | #1
> On Mar 5, 2018, at 10:00 PM, Joe Perches <joe@perches.com> wrote:
> 
> On Mon, 2018-03-05 at 16:06 -0500, Chuck Lever wrote:
>> I think I'm seeing a parsing error in v4.16-rc4 scripts/checkpatch.pl:
> 
> What I see is your patch is corrupt as the first
> char of the first context line of the actual patch
> 		goto encode_op;
> does not have a leading space but has a tab.

The patch is generated by:

$ stg export

I confirmed that the e-mailed copy is missing the blank,
but that my local copy of the patch has a blank there.
When I do this:

$ scripts/checkpatch.pl patches-nfsd-rdma-for-4.17/nfsd-compound-trace-points

I still get the error output. checkpatch.pl does not misbehave
with the 27 other patches in that directory.

Is there any debugging output that would be helpful to you?
This is v4.16-rc4.


> When I run the below I get the expected output (nothing)

Then the patch is ready to submit.


> ---
> nfsd: Trace NFSv4 COMPOUND execution
> 
> This helps record the identity and timing of the ops in each NFSv4
> COMPOUND, replacing dprintk calls that did much the same thing.
> 
> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
> ---
> fs/nfsd/nfs4proc.c |    9 +++------
> fs/nfsd/trace.h    |   39 +++++++++++++++++++++++++++++++++++++++
> 2 files changed, 42 insertions(+), 6 deletions(-)
> 
> diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
> index 39016b6..0df37e0 100644
> --- a/fs/nfsd/nfs4proc.c
> +++ b/fs/nfsd/nfs4proc.c
> @@ -1722,12 +1722,10 @@ static void svcxdr_init_encode(struct svc_rqst *rqstp,
> 		goto encode_op;
> 	}
> 
> +	trace_nfsd_compound(rqstp, args->opcnt);
> 	while (!status && resp->opcnt < args->opcnt) {
> 		op = &args->ops[resp->opcnt++];
> 
> -		dprintk("nfsv4 compound op #%d/%d: %d (%s)\n",
> -			resp->opcnt, args->opcnt, op->opnum,
> -			nfsd4_op_name(op->opnum));
> 		/*
> 		 * The XDR decode routines may have pre-set op->status;
> 		 * for example, if there is a miscellaneous XDR error
> @@ -1801,9 +1799,8 @@ static void svcxdr_init_encode(struct svc_rqst *rqstp,
> 			status = op->status;
> 		}
> 
> -		dprintk("nfsv4 compound op %p opcnt %d #%d: %d: status %d\n",
> -			args->ops, args->opcnt, resp->opcnt, op->opnum,
> -			be32_to_cpu(status));
> +		trace_nfsd_compound_status(args->opcnt, resp->opcnt, status,
> +					   nfsd4_op_name(op->opnum));
> 
> 		nfsd4_cstate_clear_replay(cstate);
> 		nfsd4_increment_op_stats(op->opnum);
> diff --git a/fs/nfsd/trace.h b/fs/nfsd/trace.h
> index a8bbd9d..80933e4 100644
> --- a/fs/nfsd/trace.h
> +++ b/fs/nfsd/trace.h
> @@ -11,6 +11,45 @@
> #include <linux/tracepoint.h>
> #include "nfsfh.h"
> 
> +TRACE_EVENT(nfsd_compound,
> +	TP_PROTO(const struct svc_rqst *rqst,
> +		 u32 args_opcnt),
> +	TP_ARGS(rqst, args_opcnt),
> +	TP_STRUCT__entry(
> +		__field(u32, xid)
> +		__field(u32, args_opcnt)
> +	),
> +	TP_fast_assign(
> +		__entry->xid = be32_to_cpu(rqst->rq_xid);
> +		__entry->args_opcnt = args_opcnt;
> +	),
> +	TP_printk("xid=0x%08x opcnt=%u",
> +		__entry->xid, __entry->args_opcnt)
> +)
> +
> +TRACE_EVENT(nfsd_compound_status,
> +	TP_PROTO(u32 args_opcnt,
> +		 u32 resp_opcnt,
> +		 __be32 status,
> +		 const char *name),
> +	TP_ARGS(args_opcnt, resp_opcnt, status, name),
> +	TP_STRUCT__entry(
> +		__field(u32, args_opcnt)
> +		__field(u32, resp_opcnt)
> +		__field(int, status)
> +		__string(name, name)
> +	),
> +	TP_fast_assign(
> +		__entry->args_opcnt = args_opcnt;
> +		__entry->resp_opcnt = resp_opcnt;
> +		__entry->status = be32_to_cpu(status);
> +		__assign_str(name, name);
> +	),
> +	TP_printk("op=%u/%u %s status=%d",
> +		__entry->resp_opcnt, __entry->args_opcnt,
> +		__get_str(name), __entry->status)
> +)
> +
> DECLARE_EVENT_CLASS(nfsd_io_class,
> 	TP_PROTO(struct svc_rqst *rqstp,
> 		 struct svc_fh	*fhp,
> 

--
Chuck Lever



--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Joe Perches March 6, 2018, 3:07 p.m. UTC | #2
On Tue, 2018-03-06 at 10:02 -0500, Chuck Lever wrote:
> > On Mar 5, 2018, at 10:00 PM, Joe Perches <joe@perches.com> wrote:
> > 
> > On Mon, 2018-03-05 at 16:06 -0500, Chuck Lever wrote:
> > > I think I'm seeing a parsing error in v4.16-rc4 scripts/checkpatch.pl:
> > 
> > What I see is your patch is corrupt as the first
> > char of the first context line of the actual patch
> > 		goto encode_op;
> > does not have a leading space but has a tab.
> 
> The patch is generated by:
> 
> $ stg export
> 
> I confirmed that the e-mailed copy is missing the blank,
> but that my local copy of the patch has a blank there.
> When I do this:
> 
> $ scripts/checkpatch.pl patches-nfsd-rdma-for-4.17/nfsd-compound-trace-points
> 
> I still get the error output. checkpatch.pl does not misbehave
> with the 27 other patches in that directory.
> 
> Is there any debugging output that would be helpful to you?
> This is v4.16-rc4.

Please send me your patch as an attachment.

--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch
diff mbox

diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
index 39016b6..0df37e0 100644
--- a/fs/nfsd/nfs4proc.c
+++ b/fs/nfsd/nfs4proc.c
@@ -1722,12 +1722,10 @@  static void svcxdr_init_encode(struct svc_rqst *rqstp,
 		goto encode_op;
 	}
 
+	trace_nfsd_compound(rqstp, args->opcnt);
 	while (!status && resp->opcnt < args->opcnt) {
 		op = &args->ops[resp->opcnt++];
 
-		dprintk("nfsv4 compound op #%d/%d: %d (%s)\n",
-			resp->opcnt, args->opcnt, op->opnum,
-			nfsd4_op_name(op->opnum));
 		/*
 		 * The XDR decode routines may have pre-set op->status;
 		 * for example, if there is a miscellaneous XDR error
@@ -1801,9 +1799,8 @@  static void svcxdr_init_encode(struct svc_rqst *rqstp,
 			status = op->status;
 		}
 
-		dprintk("nfsv4 compound op %p opcnt %d #%d: %d: status %d\n",
-			args->ops, args->opcnt, resp->opcnt, op->opnum,
-			be32_to_cpu(status));
+		trace_nfsd_compound_status(args->opcnt, resp->opcnt, status,
+					   nfsd4_op_name(op->opnum));
 
 		nfsd4_cstate_clear_replay(cstate);
 		nfsd4_increment_op_stats(op->opnum);
diff --git a/fs/nfsd/trace.h b/fs/nfsd/trace.h
index a8bbd9d..80933e4 100644
--- a/fs/nfsd/trace.h
+++ b/fs/nfsd/trace.h
@@ -11,6 +11,45 @@ 
 #include <linux/tracepoint.h>
 #include "nfsfh.h"
 
+TRACE_EVENT(nfsd_compound,
+	TP_PROTO(const struct svc_rqst *rqst,
+		 u32 args_opcnt),
+	TP_ARGS(rqst, args_opcnt),
+	TP_STRUCT__entry(
+		__field(u32, xid)
+		__field(u32, args_opcnt)
+	),
+	TP_fast_assign(
+		__entry->xid = be32_to_cpu(rqst->rq_xid);
+		__entry->args_opcnt = args_opcnt;
+	),
+	TP_printk("xid=0x%08x opcnt=%u",
+		__entry->xid, __entry->args_opcnt)
+)
+
+TRACE_EVENT(nfsd_compound_status,
+	TP_PROTO(u32 args_opcnt,
+		 u32 resp_opcnt,
+		 __be32 status,
+		 const char *name),
+	TP_ARGS(args_opcnt, resp_opcnt, status, name),
+	TP_STRUCT__entry(
+		__field(u32, args_opcnt)
+		__field(u32, resp_opcnt)
+		__field(int, status)
+		__string(name, name)
+	),
+	TP_fast_assign(
+		__entry->args_opcnt = args_opcnt;
+		__entry->resp_opcnt = resp_opcnt;
+		__entry->status = be32_to_cpu(status);
+		__assign_str(name, name);
+	),
+	TP_printk("op=%u/%u %s status=%d",
+		__entry->resp_opcnt, __entry->args_opcnt,
+		__get_str(name), __entry->status)
+)
+
 DECLARE_EVENT_CLASS(nfsd_io_class,
 	TP_PROTO(struct svc_rqst *rqstp,
 		 struct svc_fh	*fhp,