From: Namhyung Kim <namhyung@kernel.org> To: Riccardo Mancini <rickyman7@gmail.com> Cc: Arnaldo Carvalho de Melo <acme@kernel.org>, Ian Rogers <irogers@google.com>, Peter Zijlstra <peterz@infradead.org>, Ingo Molnar <mingo@redhat.com>, Mark Rutland <mark.rutland@arm.com>, Jiri Olsa <jolsa@redhat.com>, linux-kernel <linux-kernel@vger.kernel.org>, linux-perf-users <linux-perf-users@vger.kernel.org>, Alexey Bayduraev <alexey.v.bayduraev@linux.intel.com> Subject: Re: [RFC PATCH v3 06/15] perf workqueue: introduce workqueue struct Date: Tue, 24 Aug 2021 12:27:13 -0700 [thread overview] Message-ID: <CAM9d7cjJuLdBtN_2it88v4VAmVZ5sSzcpDX-eU9A+hiyO3izaA@mail.gmail.com> (raw) In-Reply-To: <9dee672538967a3cf7e82ef194ebccc709b1af41.1629454773.git.rickyman7@gmail.com> Hi Riccardo, On Fri, Aug 20, 2021 at 3:54 AM Riccardo Mancini <rickyman7@gmail.com> wrote: > +/** > + * workqueue_strerror - print message regarding lastest error in @wq > + * > + * Buffer size should be at least WORKQUEUE_STRERR_BUFSIZE bytes. > + */ > +int workqueue_strerror(struct workqueue_struct *wq, int err, char *buf, size_t size) > +{ > + int ret; > + char sbuf[THREADPOOL_STRERR_BUFSIZE], *emsg; > + const char *errno_str; > + > + errno_str = workqueue_errno_str[-err-WORKQUEUE_ERROR__OFFSET]; It seems easy to crash with an invalid err argument. > + > + switch (err) { > + case -WORKQUEUE_ERROR__POOLNEW: > + case -WORKQUEUE_ERROR__POOLEXE: > + case -WORKQUEUE_ERROR__POOLSTOP: > + case -WORKQUEUE_ERROR__POOLSTARTTHREAD: > + if (IS_ERR_OR_NULL(wq)) > + return scnprintf(buf, size, "%s: unknown.\n", > + errno_str); > + > + ret = threadpool__strerror(wq->pool, wq->pool_errno, sbuf, sizeof(sbuf)); > + if (ret < 0) > + return ret; > + return scnprintf(buf, size, "%s: %s.\n", errno_str, sbuf); > + case -WORKQUEUE_ERROR__WRITEPIPE: > + case -WORKQUEUE_ERROR__READPIPE: > + emsg = str_error_r(errno, sbuf, sizeof(sbuf)); This means the errno should be kept before calling this, right? > + return scnprintf(buf, size, "%s: %s.\n", errno_str, emsg); > + case -WORKQUEUE_ERROR__INVALIDMSG: > + return scnprintf(buf, size, "%s.\n", errno_str); > + default: > + emsg = str_error_r(err, sbuf, sizeof(sbuf)); > + return scnprintf(buf, size, "Error: %s", emsg); Newline at the end? Thanks, Namhyung > + } > +} > +
next prev parent reply other threads:[~2021-08-24 19:27 UTC|newest] Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-08-20 10:53 [RFC PATCH v3 00/15] perf: add workqueue library and use it in synthetic-events Riccardo Mancini 2021-08-20 10:53 ` [RFC PATCH v3 01/15] perf workqueue: threadpool creation and destruction Riccardo Mancini 2021-08-20 10:53 ` [RFC PATCH v3 02/15] perf tests: add test for workqueue Riccardo Mancini 2021-08-20 10:53 ` [RFC PATCH v3 03/15] perf workqueue: add threadpool start and stop functions Riccardo Mancini 2021-08-20 10:53 ` [RFC PATCH v3 04/15] perf workqueue: add threadpool execute and wait functions Riccardo Mancini 2021-08-20 10:53 ` [RFC PATCH v3 05/15] tools: add sparse context/locking annotations in compiler-types.h Riccardo Mancini 2021-08-20 10:53 ` [RFC PATCH v3 06/15] perf workqueue: introduce workqueue struct Riccardo Mancini 2021-08-24 19:27 ` Namhyung Kim [this message] 2021-08-31 16:13 ` Riccardo Mancini 2021-08-20 10:53 ` [RFC PATCH v3 07/15] perf workqueue: implement worker thread and management Riccardo Mancini 2021-08-30 7:22 ` Jiri Olsa 2021-08-20 10:53 ` [RFC PATCH v3 08/15] perf workqueue: add queue_work and flush_workqueue functions Riccardo Mancini 2021-08-24 19:40 ` Namhyung Kim 2021-08-31 16:23 ` Riccardo Mancini 2021-08-20 10:53 ` [RFC PATCH v3 09/15] perf workqueue: spinup threads when needed Riccardo Mancini 2021-08-20 10:53 ` [RFC PATCH v3 10/15] perf workqueue: create global workqueue Riccardo Mancini 2021-08-20 10:53 ` [RFC PATCH v3 11/15] perf workqueue: add utility to execute a for loop in parallel Riccardo Mancini 2021-08-20 10:53 ` [RFC PATCH v3 12/15] perf record: setup global workqueue Riccardo Mancini 2021-08-20 10:53 ` [RFC PATCH v3 13/15] perf top: " Riccardo Mancini 2021-08-20 10:54 ` [RFC PATCH v3 14/15] perf test/synthesis: " Riccardo Mancini 2021-08-20 10:54 ` [RFC PATCH v3 15/15] perf synthetic-events: use workqueue parallel_for Riccardo Mancini 2021-08-29 21:59 ` [RFC PATCH v3 00/15] perf: add workqueue library and use it in synthetic-events Jiri Olsa 2021-08-31 15:46 ` Jiri Olsa 2021-08-31 16:57 ` Riccardo Mancini
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=CAM9d7cjJuLdBtN_2it88v4VAmVZ5sSzcpDX-eU9A+hiyO3izaA@mail.gmail.com \ --to=namhyung@kernel.org \ --cc=acme@kernel.org \ --cc=alexey.v.bayduraev@linux.intel.com \ --cc=irogers@google.com \ --cc=jolsa@redhat.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-perf-users@vger.kernel.org \ --cc=mark.rutland@arm.com \ --cc=mingo@redhat.com \ --cc=peterz@infradead.org \ --cc=rickyman7@gmail.com \ --subject='Re: [RFC PATCH v3 06/15] perf workqueue: introduce workqueue struct' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).