All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
To: Jonathan Corbet <corbet@lwn.net>
Cc: Peter Zijlstra <peterz@infradead.org>,
	Kees Cook <keescook@chromium.org>,
	Linux Doc Mailing List <linux-doc@vger.kernel.org>,
	Ard Biesheuvel <ardb@kernel.org>, Ingo Molnar <mingo@kernel.org>,
	Jann Horn <jannh@google.com>, Will Deacon <will@kernel.org>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3 49/56] refcount.h: fix a kernel-doc markup
Date: Sat, 24 Oct 2020 08:28:27 +0200	[thread overview]
Message-ID: <20201024082827.08ad3010@coco.lan> (raw)
In-Reply-To: <20201023134757.628f91b7@lwn.net>

Em Fri, 23 Oct 2020 13:47:57 -0600
Jonathan Corbet <corbet@lwn.net> escreveu:

> On Fri, 23 Oct 2020 21:39:07 +0200
> Peter Zijlstra <peterz@infradead.org> wrote:
> 
> > > >  /**
> > > > - * struct refcount_t - variant of atomic_t specialized for reference counts
> > > > + * struct refcount_struct - variant of atomic_t specialized for reference counts    
> > > 
> > > Hm, this is a weird one. Yes, it's actually "struct refcount_struct",
> > > but the usage should be refcount_t (through the typedef). I'm not sure
> > > what the right way to document this is.    
> > 
> > Yeah, this is wrong. If this is due to a kernel doc warning, the kernel
> > doc machinery is wrong *again*.  

This issue has nothing to do with warnings. The problem here is that
"struct" is a markup for structs, and not for typedefs.

> 
> ...except that, since refcount_t is a typedef, "struct refcount_t" doesn't
> actually exist.  Whether it works properly after doing s/struct// remains
> to be seen...

If the intent is to document the struct and its internal fields,
this kernel-doc should work:

	/**
	 * struct refcount_struct - variant of atomic_t specialized for reference counts
	 * @refs: atomic_t counter field
	 *
	 * The counter saturates at REFCOUNT_SATURATED and will not move once
	 * there. This avoids wrapping the counter and causing 'spurious'
	 * use-after-free bugs.
	 */

Which produces this result:

	.. c:struct:: refcount_struct

	   variant of atomic_t specialized for reference counts

	**Definition**

	::

	  struct refcount_struct {
	    atomic_t refs;
	  };

	**Members**

	``refs``
	  atomic_t counter field

	(description)

See, in this case, the identifier is not opaque: its members are
documented at the html (or man) output.

If you want, instead, to document the typedef, this is the
proper way:

	/**
	 * typedef refcount_t - variant of atomic_t specialized for reference counts
	 *
	 * The counter saturates at REFCOUNT_SATURATED and will not move once
	 * there. This avoids wrapping the counter and causing 'spurious'
	 * use-after-free bugs.
	 */

It will handle this one as an opaque type, meaning that it won't be 
showing the "refs" field - even if you forget to drop the @refs: 
at the markup. The result will be:


	.. c:type:: refcount_t

	   variant of atomic_t specialized for reference counts

	(description)

-

If you want both, then you would either split struct and typedef, e. g.
with something like:

	/**
	 * struct refcount_struct - variant of atomic_t specialized for reference counts
	 * @refs: atomic_t counter field
	 *
	 * The counter saturates at REFCOUNT_SATURATED and will not move once
	 * there. This avoids wrapping the counter and causing 'spurious'
	 * use-after-free bugs.
	 */
	struct refcount_struct {
	        atomic_t refs;
	};

	/**
	 * typedef refcount_t - variant of atomic_t specialized for reference counts
	 * @refs: atomic_t counter field
	 *
	 * The counter saturates at REFCOUNT_SATURATED and will not move once
	 * there. This avoids wrapping the counter and causing 'spurious'
	 * use-after-free bugs.
	 */
	typedef struct refcount_struct refcount_t;

Or, you could add the member at the description field. E. g. something
like this:

	/**
	 * typedef refcount_t - variant of atomic_t specialized for reference counts
	 *
	 * The counter saturates at REFCOUNT_SATURATED and will not move once
	 * there. This avoids wrapping the counter and causing 'spurious'
	 * use-after-free bugs.
	 *
	 * Members:
	 *   ``refs``
	 *        atomic_t counter field
	 */
	typedef struct refcount_struct {
	        atomic_t refs;
	} refcount_t;

If you want to test it, you can run kernel-doc directly, to see how
it will parse it. For ReST output, that's the syntax:

	./scripts/kernel-doc --sphinx-version 3 include/linux/refcount.h

Thanks,
Mauro

  reply	other threads:[~2020-10-24  6:28 UTC|newest]

Thread overview: 162+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-23 16:32 [PATCH v3 00/56] Fix several bad kernel-doc markups Mauro Carvalho Chehab
2020-10-23 16:32 ` [PATCH v3 01/56] scripts: kernel-doc: fix typedef parsing Mauro Carvalho Chehab
2020-10-23 17:22   ` Jonathan Corbet
2020-10-23 18:01     ` Joe Perches
2020-10-26  7:03       ` Mauro Carvalho Chehab
2020-10-27  3:55         ` Joe Perches
2020-10-27  8:37           ` Mauro Carvalho Chehab
2020-10-24  6:43     ` Mauro Carvalho Chehab
2020-10-26  5:55     ` Mauro Carvalho Chehab
2020-10-23 16:32 ` [PATCH v3 02/56] drm: amdgpu_dm: fix a typo Mauro Carvalho Chehab
2020-10-23 16:32   ` Mauro Carvalho Chehab
2020-10-23 16:32   ` Mauro Carvalho Chehab
2020-10-23 19:02   ` Alex Deucher
2020-10-23 19:02     ` Alex Deucher
2020-10-23 19:02     ` Alex Deucher
2020-10-23 16:32 ` [PATCH v3 03/56] amdgpu: fix a few kernel-doc markup issues Mauro Carvalho Chehab
2020-10-23 16:32   ` Mauro Carvalho Chehab
2020-10-23 16:32   ` Mauro Carvalho Chehab
2020-10-23 16:38   ` Christian König
2020-10-23 16:38     ` Christian König
2020-10-23 16:38     ` Christian König
2020-10-23 18:58     ` Alex Deucher
2020-10-23 18:58       ` Alex Deucher
2020-10-23 18:58       ` Alex Deucher
2020-10-23 16:32 ` [PATCH v3 04/56] drm: drm_print.h: fix kernel-doc markups Mauro Carvalho Chehab
2020-10-23 16:32   ` Mauro Carvalho Chehab
2020-10-23 16:32 ` [PATCH v3 05/56] s390: " Mauro Carvalho Chehab
2020-10-23 16:32 ` [PATCH v3 06/56] x86: mtrr: fix a kernel-doc markup Mauro Carvalho Chehab
2020-10-23 16:32 ` [PATCH v3 07/56] block: blk-mq: " Mauro Carvalho Chehab
2020-10-23 18:20   ` Jens Axboe
2020-10-23 16:32 ` [PATCH v3 08/56] ata: fix some kernel-doc markups Mauro Carvalho Chehab
2020-10-23 18:21   ` Jens Axboe
2020-10-23 16:32 ` [PATCH v3 09/56] drivers: base: " Mauro Carvalho Chehab
2020-10-23 16:32 ` [PATCH v3 10/56] EDAC: " Mauro Carvalho Chehab
2020-11-02 19:37   ` Borislav Petkov
2020-10-23 16:32 ` [PATCH v3 11/56] drm/amdgpu: " Mauro Carvalho Chehab
2020-10-23 16:32   ` Mauro Carvalho Chehab
2020-10-23 16:32   ` Mauro Carvalho Chehab
2020-10-23 16:50   ` Christian König
2020-10-23 16:50     ` Christian König
2020-10-23 16:50     ` Christian König
2020-10-23 18:59     ` Alex Deucher
2020-10-23 18:59       ` Alex Deucher
2020-10-23 18:59       ` Alex Deucher
2020-10-23 16:32 ` [PATCH v3 12/56] drm: " Mauro Carvalho Chehab
2020-10-23 16:32   ` [Intel-gfx] " Mauro Carvalho Chehab
2020-10-23 16:32   ` Mauro Carvalho Chehab
2020-10-23 16:33 ` [PATCH v3 13/56] HSI: fix a kernel-doc markup Mauro Carvalho Chehab
2020-10-23 16:33 ` [PATCH v3 14/56] IB: fix kernel-doc markups Mauro Carvalho Chehab
2020-10-23 16:33   ` Mauro Carvalho Chehab
2020-10-24 21:50   ` Max Gurtovoy
2020-10-24 21:50     ` Max Gurtovoy
2020-10-23 16:33 ` [PATCH v3 15/56] media: " Mauro Carvalho Chehab
2020-10-23 16:33   ` Mauro Carvalho Chehab
2020-10-23 17:27   ` Sakari Ailus
2020-10-23 17:27     ` Sakari Ailus
2020-10-23 16:33 ` [PATCH v3 16/56] mei: bus: fix a kernel-doc markup Mauro Carvalho Chehab
2020-10-23 16:33 ` [PATCH v3 17/56] mtd: rawnand: " Mauro Carvalho Chehab
2020-10-23 16:33   ` Mauro Carvalho Chehab
2020-10-30 17:27   ` Miquel Raynal
2020-10-30 17:27     ` Miquel Raynal
2020-10-23 16:33 ` [PATCH v3 18/56] net: phy: fix kernel-doc markups Mauro Carvalho Chehab
2020-10-23 21:04   ` Andrew Lunn
2020-10-23 16:33 ` [PATCH v3 19/56] net: datagram: fix some " Mauro Carvalho Chehab
2020-10-23 16:33 ` [PATCH v3 20/56] net: core: " Mauro Carvalho Chehab
2020-10-23 16:33 ` [PATCH v3 21/56] mac80211: fix " Mauro Carvalho Chehab
2020-10-27  7:26   ` Johannes Berg
2020-10-27  8:00     ` Mauro Carvalho Chehab
2020-10-23 16:33 ` [PATCH v3 22/56] parport: fix a kernel-doc markup Mauro Carvalho Chehab
2020-10-23 16:33 ` [PATCH v3 23/56] PCI: fix kernel-doc markups Mauro Carvalho Chehab
2020-10-23 17:43   ` Bjorn Helgaas
2020-10-24  7:30     ` Mauro Carvalho Chehab
2020-11-05 14:44   ` Bjorn Helgaas
2020-10-23 16:33 ` [PATCH v3 24/56] PNP: " Mauro Carvalho Chehab
2020-10-27 18:24   ` Rafael J. Wysocki
2020-10-23 16:33 ` [PATCH v3 25/56] rapidio: fix kernel-doc a markup Mauro Carvalho Chehab
2020-10-23 16:33 ` [PATCH v3 26/56] regulator: fix a kernel-doc markup Mauro Carvalho Chehab
2020-10-23 16:33 ` [PATCH v3 27/56] scsi: fix some kernel-doc markups Mauro Carvalho Chehab
2020-10-27  1:54   ` Martin K. Petersen
2020-10-23 16:33 ` [PATCH v3 28/56] slimbus: fix a kernel-doc markup Mauro Carvalho Chehab
2020-10-23 16:33   ` Mauro Carvalho Chehab
2020-10-26 14:52   ` Srinivas Kandagatla
2020-10-26 14:52     ` Srinivas Kandagatla
2020-10-23 16:33 ` [PATCH v3 29/56] spi: fix a typo inside " Mauro Carvalho Chehab
2020-10-23 16:33 ` [PATCH v3 30/56] uio: fix some kernel-doc markups Mauro Carvalho Chehab
2020-10-23 16:33 ` [PATCH v3 31/56] usb: dwc3: fix " Mauro Carvalho Chehab
2020-10-27  6:58   ` Felipe Balbi
2020-10-28  9:08     ` Greg Kroah-Hartman
2020-10-28  9:13       ` Felipe Balbi
2020-10-23 16:33 ` [PATCH v3 32/56] video: fix some " Mauro Carvalho Chehab
2020-10-23 16:33   ` Mauro Carvalho Chehab
2020-10-23 16:33 ` [PATCH v3 33/56] vme: fix two " Mauro Carvalho Chehab
2020-10-23 16:33   ` Mauro Carvalho Chehab
2020-10-23 16:33 ` [PATCH v3 34/56] fs: fix " Mauro Carvalho Chehab
2020-10-23 16:33 ` [PATCH v3 35/56] jbd2: " Mauro Carvalho Chehab
2020-10-23 16:57   ` Jan Kara
2020-10-23 16:33 ` [PATCH v3 36/56] locks: fix a typo at a kernel-doc markup Mauro Carvalho Chehab
2020-10-26 12:01   ` Jeff Layton
2020-10-23 16:33 ` [PATCH v3 37/56] pstore/zone: fix " Mauro Carvalho Chehab
2020-10-23 17:40   ` Kees Cook
2020-10-23 16:33 ` [PATCH v3 38/56] clk: " Mauro Carvalho Chehab
2020-11-05  2:01   ` Stephen Boyd
2020-10-23 16:33 ` [PATCH v3 39/56] completion: fix kernel-doc markups Mauro Carvalho Chehab
2020-10-23 16:33 ` [PATCH v3 40/56] firmware: stratix10-svc: " Mauro Carvalho Chehab
2020-10-27 17:31   ` Richard Gong
2020-10-23 16:33 ` [PATCH v3 41/56] connector: fix a kernel-doc markup Mauro Carvalho Chehab
2020-10-23 16:33 ` [PATCH v3 42/56] lib/crc7: " Mauro Carvalho Chehab
2020-10-23 16:33 ` [PATCH v3 43/56] hrtimer: fix kernel-doc markups Mauro Carvalho Chehab
2020-10-23 16:33 ` [PATCH v3 44/56] genirq: " Mauro Carvalho Chehab
2020-10-23 16:33 ` [PATCH v3 45/56] iio: fix a kernel-doc markup Mauro Carvalho Chehab
2020-10-29 15:43   ` Jonathan Cameron
2020-10-23 16:33 ` [PATCH v3 46/56] list: fix a typo at the " Mauro Carvalho Chehab
2020-10-23 17:55   ` Andy Shevchenko
2020-10-23 20:50   ` Paul E. McKenney
2020-10-23 16:33 ` [PATCH v3 47/56] memblock: fix kernel-doc markups Mauro Carvalho Chehab
2020-10-25  6:34   ` Mike Rapoport
2020-10-23 16:33 ` [PATCH v3 48/56] sound: " Mauro Carvalho Chehab
2020-10-23 16:33   ` Mauro Carvalho Chehab
2020-10-23 18:26   ` Mark Brown
2020-10-23 18:26     ` Mark Brown
2020-10-26 13:46   ` Takashi Iwai
2020-10-26 13:46     ` Takashi Iwai
2020-10-26 14:14     ` Mauro Carvalho Chehab
2020-10-26 14:14       ` Mauro Carvalho Chehab
2020-10-26 14:25       ` Takashi Iwai
2020-10-26 14:25         ` Takashi Iwai
2020-10-23 16:33 ` [PATCH v3 49/56] refcount.h: fix a kernel-doc markup Mauro Carvalho Chehab
2020-10-23 17:40   ` Kees Cook
2020-10-23 19:39     ` Peter Zijlstra
2020-10-23 19:47       ` Jonathan Corbet
2020-10-24  6:28         ` Mauro Carvalho Chehab [this message]
2020-10-26  8:10           ` Peter Zijlstra
2020-10-26  9:16             ` Mauro Carvalho Chehab
2020-10-26  9:38               ` Peter Zijlstra
2020-10-23 16:33 ` [PATCH v3 50/56] w1: " Mauro Carvalho Chehab
2020-10-23 16:33 ` [PATCH v3 51/56] audit: " Mauro Carvalho Chehab
2020-10-23 16:33   ` Mauro Carvalho Chehab
2020-10-25 22:10   ` Paul Moore
2020-10-25 22:10     ` Paul Moore
2020-10-25 22:38     ` Mauro Carvalho Chehab
2020-10-25 22:38       ` Mauro Carvalho Chehab
2020-10-28  0:59       ` Paul Moore
2020-10-28  0:59         ` Paul Moore
2020-10-23 16:33 ` [PATCH v3 52/56] resource: fix kernel-doc markups Mauro Carvalho Chehab
2020-10-23 16:33 ` [PATCH v3 53/56] shed: fix kernel-doc markup Mauro Carvalho Chehab
2020-10-23 17:53   ` Steven Rostedt
2020-10-26 10:07     ` Mauro Carvalho Chehab
2020-10-23 16:33 ` [PATCH v3 54/56] mm: fix kernel-doc markups Mauro Carvalho Chehab
2020-10-23 17:46   ` Matthew Wilcox
2020-10-23 16:33 ` [PATCH v3 55/56] selftests: kselftest_harness.h: partially " Mauro Carvalho Chehab
2020-10-23 17:39   ` Kees Cook
2020-10-23 16:33 ` [PATCH v3 56/56] scrpits: kernel-doc: validate kernel-doc markup with the actual names Mauro Carvalho Chehab
2020-10-23 20:02   ` kernel test robot
2020-10-23 20:02     ` kernel test robot
2020-10-23 20:34   ` kernel test robot
2020-10-23 20:34     ` kernel test robot
2020-11-05 15:00   ` Matthew Wilcox
2020-11-05 15:15     ` Jonathan Corbet
2020-11-05 15:30       ` Matthew Wilcox
2020-11-05 15:20     ` Mauro Carvalho Chehab
2020-10-23 18:12 ` [PATCH v3 00/56] Fix several bad kernel-doc markups Jakub Kicinski
2020-10-23 18:22   ` Mark Brown

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=20201024082827.08ad3010@coco.lan \
    --to=mchehab+huawei@kernel.org \
    --cc=ardb@kernel.org \
    --cc=corbet@lwn.net \
    --cc=jannh@google.com \
    --cc=keescook@chromium.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=will@kernel.org \
    /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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.