* [PATCH 0/4] treewide: Add 'fallthrough' pseudo-keyword
@ 2019-10-05 16:46 Joe Perches
2019-10-05 16:46 ` [PATCH 3/4] Documentation/process: Add fallthrough pseudo-keyword Joe Perches
2019-10-11 16:29 ` [PATCH 0/4] treewide: Add 'fallthrough' pseudo-keyword Linus Torvalds
0 siblings, 2 replies; 11+ messages in thread
From: Joe Perches @ 2019-10-05 16:46 UTC (permalink / raw)
To: Linus Torvalds, linux-sctp
Cc: Miguel Ojeda, Kees Cook, Borislav Petkov, H . Peter Anvin,
Thomas Gleixner, Pavel Machek, Gustavo A . R . Silva,
Arnaldo Carvalho de Melo, Kan Liang, Namhyung Kim, Jiri Olsa,
Alexander Shishkin, Shawn Landden, x86, linux-kernel,
Nathan Chancellor, Nick Desaulniers, Andrew Morton, David Miller,
clang-built-linux, Jonathan Corbet, Vlad Yasevich, Neil Horman,
Marcelo Ricardo Leitner, linux-doc, netdev
Add 'fallthrough' pseudo-keyword to enable the removal of comments
like '/* fallthrough */'.
Add a script to convert the fallthrough comments.
The script can be run over any single file or treewide.
For instance, a treewide conversion can be done using:
$ git ls-files -- '*.[ch]' | \
xargs scripts/cvt_style.pl -o --convert=fallthrough
This currently produces:
$ git diff --shortstat
1839 files changed, 4377 insertions(+), 4698 deletions(-)
Example fallthrough conversion produced by the script:
$ scripts/cvt_style.pl -o --convert=fallthrough arch/arm/mm/alignment.c
a/arch/arm/mm/alignment.c
b/arch/arm/mm/alignment.c
@@ -695,8 +695,7 @@ thumb2arm(u16 tinstr)
return subset[(L<<1) | ((tinstr & (1<<8)) >> 8)] |
(tinstr & 255); /* register_list */
}
- /* Else, fall through - for illegal instruction case */
-
+ fallthrough; /* for illegal instruction case */
default:
return BAD_INSTR;
}
@@ -751,8 +750,7 @@ do_alignment_t32_to_handler(unsigned long *pinstr, struct pt_regs *regs,
case 0xe8e0:
case 0xe9e0:
poffset->un = (tinst2 & 0xff) << 2;
- /* Fall through */
-
+ fallthrough;
case 0xe940:
case 0xe9c0:
return do_alignment_ldrdstrd;
Joe Perches (4):
net: sctp: Rename fallthrough label to unhandled
compiler_attributes.h: Add 'fallthrough' pseudo keyword for switch/case use
Documentation/process: Add fallthrough pseudo-keyword
scripts/cvt_style.pl: Tool to reformat sources in various ways
Documentation/process/coding-style.rst | 2 +-
Documentation/process/deprecated.rst | 33 +-
include/linux/compiler_attributes.h | 17 +
net/sctp/sm_make_chunk.c | 12 +-
scripts/cvt_style.pl | 808 +++++++++++++++++++++++++++++++++
5 files changed, 855 insertions(+), 17 deletions(-)
create mode 100755 scripts/cvt_style.pl
--
2.15.0
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 3/4] Documentation/process: Add fallthrough pseudo-keyword
2019-10-05 16:46 [PATCH 0/4] treewide: Add 'fallthrough' pseudo-keyword Joe Perches
@ 2019-10-05 16:46 ` Joe Perches
2019-10-05 17:47 ` Miguel Ojeda
2019-10-11 16:29 ` [PATCH 0/4] treewide: Add 'fallthrough' pseudo-keyword Linus Torvalds
1 sibling, 1 reply; 11+ messages in thread
From: Joe Perches @ 2019-10-05 16:46 UTC (permalink / raw)
To: Linus Torvalds, linux-kernel
Cc: Miguel Ojeda, Kees Cook, Borislav Petkov, H . Peter Anvin,
Thomas Gleixner, Pavel Machek, Gustavo A . R . Silva,
Arnaldo Carvalho de Melo, Kan Liang, Namhyung Kim, Jiri Olsa,
Alexander Shishkin, Shawn Landden, x86, Nathan Chancellor,
Nick Desaulniers, Andrew Morton, David Miller, clang-built-linux,
Jonathan Corbet, linux-doc
Describe the fallthrough pseudo-keyword.
Convert the coding-style.rst example to the keyword style.
Add description and links to deprecated.rst.
Signed-off-by: Joe Perches <joe@perches.com>
---
Documentation/process/coding-style.rst | 2 +-
Documentation/process/deprecated.rst | 33 +++++++++++++++++++++++----------
2 files changed, 24 insertions(+), 11 deletions(-)
diff --git a/Documentation/process/coding-style.rst b/Documentation/process/coding-style.rst
index f4a2198187f9..ada573b7d703 100644
--- a/Documentation/process/coding-style.rst
+++ b/Documentation/process/coding-style.rst
@@ -56,7 +56,7 @@ instead of ``double-indenting`` the ``case`` labels. E.g.:
case 'K':
case 'k':
mem <<= 10;
- /* fall through */
+ fallthrough;
default:
break;
}
diff --git a/Documentation/process/deprecated.rst b/Documentation/process/deprecated.rst
index 56280e108d5a..a0ffdc8daef3 100644
--- a/Documentation/process/deprecated.rst
+++ b/Documentation/process/deprecated.rst
@@ -122,14 +122,27 @@ memory adjacent to the stack (when built without `CONFIG_VMAP_STACK=y`)
Implicit switch case fall-through
---------------------------------
-The C language allows switch cases to "fall through" when
-a "break" statement is missing at the end of a case. This,
-however, introduces ambiguity in the code, as it's not always
-clear if the missing break is intentional or a bug. As there
-have been a long list of flaws `due to missing "break" statements
+The C language allows switch cases to "fall-through" when a "break" statement
+is missing at the end of a case. This, however, introduces ambiguity in the
+code, as it's not always clear if the missing break is intentional or a bug.
+
+As there have been a long list of flaws `due to missing "break" statements
<https://cwe.mitre.org/data/definitions/484.html>`_, we no longer allow
-"implicit fall-through". In order to identify an intentional fall-through
-case, we have adopted the marking used by static analyzers: a comment
-saying `/* Fall through */`. Once the C++17 `__attribute__((fallthrough))`
-is more widely handled by C compilers, static analyzers, and IDEs, we can
-switch to using that instead.
+"implicit fall-through".
+
+In order to identify intentional fall-through cases, we have adopted a
+pseudo-keyword macro 'fallthrough' which expands to gcc's extension
+__attribute__((__fallthrough__)). `Statement Attributes
+<https://gcc.gnu.org/onlinedocs/gcc/Statement-Attributes.html>`_
+
+When the C17/C18 [[fallthrough]] syntax is more commonly supported by
+C compilers, static analyzers, and IDEs, we can switch to using that syntax
+for the macro pseudo-keyword.
+
+All switch/case blocks must end in one of:
+
+ break;
+ fallthrough;
+ continue;
+ goto <label>;
+ return [expression];
--
2.15.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 3/4] Documentation/process: Add fallthrough pseudo-keyword
2019-10-05 16:46 ` [PATCH 3/4] Documentation/process: Add fallthrough pseudo-keyword Joe Perches
@ 2019-10-05 17:47 ` Miguel Ojeda
2019-10-09 21:51 ` Nick Desaulniers
0 siblings, 1 reply; 11+ messages in thread
From: Miguel Ojeda @ 2019-10-05 17:47 UTC (permalink / raw)
To: Joe Perches
Cc: Linus Torvalds, linux-kernel, Kees Cook, Borislav Petkov,
H . Peter Anvin, Thomas Gleixner, Pavel Machek,
Gustavo A . R . Silva, Arnaldo Carvalho de Melo, Kan Liang,
Namhyung Kim, Jiri Olsa, Alexander Shishkin, Shawn Landden,
maintainer:X86 ARCHITECTURE (32-BIT AND 64-BIT),
Nathan Chancellor, Nick Desaulniers, Andrew Morton, David Miller,
clang-built-linux, Jonathan Corbet, Linux Doc Mailing List
On Sat, Oct 5, 2019 at 6:47 PM Joe Perches <joe@perches.com> wrote:
>
> diff --git a/Documentation/process/deprecated.rst b/Documentation/process/deprecated.rst
> index 56280e108d5a..a0ffdc8daef3 100644
> --- a/Documentation/process/deprecated.rst
> +++ b/Documentation/process/deprecated.rst
> @@ -122,14 +122,27 @@ memory adjacent to the stack (when built without `CONFIG_VMAP_STACK=y`)
>
> Implicit switch case fall-through
> ---------------------------------
> -The C language allows switch cases to "fall through" when
> -a "break" statement is missing at the end of a case. This,
> -however, introduces ambiguity in the code, as it's not always
> -clear if the missing break is intentional or a bug. As there
> -have been a long list of flaws `due to missing "break" statements
> +The C language allows switch cases to "fall-through" when a "break" statement
> +is missing at the end of a case. This, however, introduces ambiguity in the
> +code, as it's not always clear if the missing break is intentional or a bug.
> +
> +As there have been a long list of flaws `due to missing "break" statements
> <https://cwe.mitre.org/data/definitions/484.html>`_, we no longer allow
> -"implicit fall-through". In order to identify an intentional fall-through
> -case, we have adopted the marking used by static analyzers: a comment
> -saying `/* Fall through */`. Once the C++17 `__attribute__((fallthrough))`
> -is more widely handled by C compilers, static analyzers, and IDEs, we can
> -switch to using that instead.
> +"implicit fall-through".
> +
> +In order to identify intentional fall-through cases, we have adopted a
> +pseudo-keyword macro 'fallthrough' which expands to gcc's extension
> +__attribute__((__fallthrough__)). `Statement Attributes
> +<https://gcc.gnu.org/onlinedocs/gcc/Statement-Attributes.html>`_
> +
> +When the C17/C18 [[fallthrough]] syntax is more commonly supported by
Note that C17/C18 does not have [[fallthrough]]. C++17 introduced it,
as it is mentioned above. I would keep the
__attribute__((fallthrough)) -> [[fallthrough]] change you did,
though, since that is indeed the standard syntax (given the paragraph
references C++17).
I was told by Aaron Ballman (who is proposing them for C) that it is
more or less likely that it becomes standardized in C2x. However, it
is still not added to the draft (other attributes are already,
though). See N2268 and N2269:
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2268.pdf (fallthrough)
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2269.pdf
(attributes in general)
Cheers,
Miguel
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 3/4] Documentation/process: Add fallthrough pseudo-keyword
2019-10-05 17:47 ` Miguel Ojeda
@ 2019-10-09 21:51 ` Nick Desaulniers
0 siblings, 0 replies; 11+ messages in thread
From: Nick Desaulniers @ 2019-10-09 21:51 UTC (permalink / raw)
To: Miguel Ojeda
Cc: Joe Perches, Linus Torvalds, linux-kernel, Kees Cook,
Borislav Petkov, H . Peter Anvin, Thomas Gleixner, Pavel Machek,
Gustavo A . R . Silva, Arnaldo Carvalho de Melo, Kan Liang,
Namhyung Kim, Jiri Olsa, Alexander Shishkin, Shawn Landden,
maintainer:X86 ARCHITECTURE (32-BIT AND 64-BIT),
Nathan Chancellor, Andrew Morton, David Miller, clang-built-linux,
Jonathan Corbet, Linux Doc Mailing List
On Sat, Oct 5, 2019 at 10:48 AM Miguel Ojeda
<miguel.ojeda.sandonis@gmail.com> wrote:
>
> On Sat, Oct 5, 2019 at 6:47 PM Joe Perches <joe@perches.com> wrote:
> >
> > +When the C17/C18 [[fallthrough]] syntax is more commonly supported by
>
> Note that C17/C18 does not have [[fallthrough]]. C++17 introduced it,
> as it is mentioned above. I would keep the
> __attribute__((fallthrough)) -> [[fallthrough]] change you did,
> though, since that is indeed the standard syntax (given the paragraph
> references C++17).
>
> I was told by Aaron Ballman (who is proposing them for C) that it is
> more or less likely that it becomes standardized in C2x. However, it
> is still not added to the draft (other attributes are already,
> though). See N2268 and N2269:
>
> http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2268.pdf (fallthrough)
> http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2269.pdf
> (attributes in general)
>
Interesting. I think those links might be useful to include, or drop
the section on C++ style attributes outright. Either way:
Acked-by: Nick Desaulniers <ndesaulniers@google.com>
--
Thanks,
~Nick Desaulniers
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 0/4] treewide: Add 'fallthrough' pseudo-keyword
2019-10-05 16:46 [PATCH 0/4] treewide: Add 'fallthrough' pseudo-keyword Joe Perches
2019-10-05 16:46 ` [PATCH 3/4] Documentation/process: Add fallthrough pseudo-keyword Joe Perches
@ 2019-10-11 16:29 ` Linus Torvalds
2019-10-11 17:43 ` Joe Perches
2019-10-11 18:01 ` Miguel Ojeda
1 sibling, 2 replies; 11+ messages in thread
From: Linus Torvalds @ 2019-10-11 16:29 UTC (permalink / raw)
To: Joe Perches
Cc: linux-sctp, Miguel Ojeda, Kees Cook, Borislav Petkov,
H . Peter Anvin, Thomas Gleixner, Pavel Machek,
Gustavo A . R . Silva, Arnaldo Carvalho de Melo, Kan Liang,
Namhyung Kim, Jiri Olsa, Alexander Shishkin, Shawn Landden,
the arch/x86 maintainers, Linux Kernel Mailing List,
Nathan Chancellor, Nick Desaulniers, Andrew Morton, David Miller,
clang-built-linux, Jonathan Corbet, Vlad Yasevich, Neil Horman,
Marcelo Ricardo Leitner, open list:DOCUMENTATION, Netdev
On Sat, Oct 5, 2019 at 9:46 AM Joe Perches <joe@perches.com> wrote:
>
> Add 'fallthrough' pseudo-keyword to enable the removal of comments
> like '/* fallthrough */'.
I applied patches 1-3 to my tree just to make it easier for people to
start doing this. Maybe some people want to do the conversion on their
own subsystem rather than with a global script, but even if not, this
looks better as a "prepare for the future" series and I feel that if
we're doing the "fallthrough" thing eventually, the sooner we do the
prepwork the better.
I'm a tiny bit worried that the actual conversion is just going to
cause lots of pain for the stable people, but I'll not worry about it
_too_ much. If the stable people decide that it's too painful for them
to deal with the comment vs keyword model, they may want to backport
these three patches too.
Linus
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 0/4] treewide: Add 'fallthrough' pseudo-keyword
2019-10-11 16:29 ` [PATCH 0/4] treewide: Add 'fallthrough' pseudo-keyword Linus Torvalds
@ 2019-10-11 17:43 ` Joe Perches
2019-10-11 17:46 ` Linus Torvalds
2019-10-11 18:01 ` Miguel Ojeda
1 sibling, 1 reply; 11+ messages in thread
From: Joe Perches @ 2019-10-11 17:43 UTC (permalink / raw)
To: Linus Torvalds
Cc: linux-sctp, Miguel Ojeda, Kees Cook, Borislav Petkov,
H . Peter Anvin, Thomas Gleixner, Pavel Machek,
Gustavo A . R . Silva, Arnaldo Carvalho de Melo, Kan Liang,
Namhyung Kim, Jiri Olsa, Alexander Shishkin, Shawn Landden,
the arch/x86 maintainers, Linux Kernel Mailing List,
Nathan Chancellor, Nick Desaulniers, Andrew Morton, David Miller,
clang-built-linux, Jonathan Corbet, Vlad Yasevich, Neil Horman,
Marcelo Ricardo Leitner, open list:DOCUMENTATION, Netdev
On Fri, 2019-10-11 at 09:29 -0700, Linus Torvalds wrote:
> On Sat, Oct 5, 2019 at 9:46 AM Joe Perches <joe@perches.com> wrote:
> > Add 'fallthrough' pseudo-keyword to enable the removal of comments
> > like '/* fallthrough */'.
>
> I applied patches 1-3 to my tree just to make it easier for people to
> start doing this. Maybe some people want to do the conversion on their
> own subsystem rather than with a global script, but even if not, this
> looks better as a "prepare for the future" series and I feel that if
> we're doing the "fallthrough" thing eventually, the sooner we do the
> prepwork the better.
>
> I'm a tiny bit worried that the actual conversion is just going to
> cause lots of pain for the stable people, but I'll not worry about it
> _too_ much. If the stable people decide that it's too painful for them
> to deal with the comment vs keyword model, they may want to backport
> these three patches too.
Shouldn't a conversion script be public somewhere?
The old cvt_style script could be reduced to something like the below.
From: Joe Perches <joe@perches.com>
Date: Fri, 11 Oct 2019 10:34:04 -0700
Subject: [PATCH] scripts:cvt_fallthrough.pl: Add script to convert /* fallthrough */ comments
Convert /* fallthrough */ style comments to the pseudo-keyword fallthrough;
to allow clang 10 and higher to work at finding missing fallthroughs too.
Requires a git repository and this overwrites the input sources.
Run with a path like:
./scripts/cvt_fallthrough.pl block
and all files in the path will be converted or a specific file like:
./scripts/cvt_fallthrough.pl drivers/net/wireless/zydas/zd1201.c
Signed-off-by: Joe Perches <joe@perches.com>
---
scripts/cvt_fallthrough.pl | 201 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 201 insertions(+)
create mode 100755 scripts/cvt_fallthrough.pl
diff --git a/scripts/cvt_fallthrough.pl b/scripts/cvt_fallthrough.pl
new file mode 100755
index 000000000000..013379464f86
--- /dev/null
+++ b/scripts/cvt_fallthrough.pl
@@ -0,0 +1,201 @@
+#!/usr/bin/perl -w
+
+# script to modify /* fallthrough */ style comments to fallthrough;
+# use: perl cvt_fallthrough.pl <paths|files>
+# e.g.: perl cvtfallthrough.pl drivers/net/ethernet/intel
+
+use strict;
+
+my $P = $0;
+my $modified = 0;
+my $quiet = 0;
+
+sub expand_tabs {
+ my ($str) = @_;
+
+ my $res = '';
+ my $n = 0;
+ for my $c (split(//, $str)) {
+ if ($c eq "\t") {
+ $res .= ' ';
+ $n++;
+ for (; ($n % 8) != 0; $n++) {
+ $res .= ' ';
+ }
+ next;
+ }
+ $res .= $c;
+ $n++;
+ }
+
+ return $res;
+}
+
+my $args = join(" ", @ARGV);
+my $output = `git ls-files -- $args`;
+my @files = split("\n", $output);
+
+foreach my $file (@files) {
+ my $f;
+ my $cvt = 0;
+ my $text;
+
+# read the file
+
+ next if ((-d $file));
+
+ open($f, '<', $file)
+ or die "$P: Can't open $file for read\n";
+ $text = do { local($/) ; <$f> };
+ close($f);
+
+ next if ($text eq "");
+
+ # for style:
+
+ # /* <fallthrough comment> */
+ # case FOO:
+
+ # while (comment has fallthrough and next non-blank, non-continuation line is (case or default:)) {
+ # remove newline, whitespace before, fallthrough comment and whitespace after
+ # insert newline, adjusted spacing and fallthrough; newline
+ # }
+
+ my $count = 0;
+ my @fallthroughs = (
+ 'fallthrough',
+ '@fallthrough@',
+ 'lint -fallthrough[ \t]*',
+ '[ \t.!]*(?:ELSE,? |INTENTIONAL(?:LY)? )?',
+ 'intentional(?:ly)?[ \t]*fall(?:(?:s | |-)[Tt]|t)hr(?:ough|u|ew)',
+ '(?:else,?\s*)?FALL(?:S | |-)?THR(?:OUGH|U|EW)[ \t.!]*(?:-[^\n\r]*)?',
+ '[ \t.!]*(?:Else,? |Intentional(?:ly)? )?',
+ 'Fall(?:(?:s | |-)[Tt]|t)hr(?:ough|u|ew)[ \t.!]*(?:-[^\n\r]*)?',
+ '[ \t.!]*(?:[Ee]lse,? |[Ii]ntentional(?:ly)? )?',
+ 'fall(?:s | |-)?thr(?:ough|u|ew)[ \t.!]*(?:-[^\n\r]*)?',
+ );
+ do {
+ $count = 0;
+ pos($text) = 0;
+ foreach my $ft (@fallthroughs) {
+ my $regex = '(((?:[ \t]*\n)*[ \t]*)(/\*\s*(?!\*/)?\b' . "$ft" . '\s*(?!\*/)?\*/(?:[ \t]*\n)*)([ \t]*))(?:case\s+|default\s*:)';
+
+ while ($text =~ m{${regex}}i) {
+ my $all_but_case = $1;
+ my $space_before = $2;
+ my $fallthrough = $3;
+ my $space_after = $4;
+ my $pos_before = $-[1];
+ my $pos_after = $+[3];
+
+ # try to maintain any additional comment on the same line
+ my $comment = "";
+ if ($regex =~ /\\r/) {
+ $comment = $fallthrough;
+ $comment =~ s@^/\*\s*@@;
+ $comment =~ s@\s*\*/\s*$@@;
+ $comment =~ s@^\s*(?:intentional(?:ly)?\s+|else,?\s*)?fall[s\-]*\s*thr(?:ough|u|ew)[\s\.\-]*@@i;
+ $comment =~ s@\s+$@@;
+ $comment =~ s@\.*$@@;
+ $comment = "\t/* $comment */" if ($comment ne "");
+ }
+ substr($text, $pos_before, $pos_after - $pos_before, "");
+ substr($text, $pos_before, 0, "\n${space_after}\tfallthrough;${comment}\n");
+ pos($text) = $pos_before;
+ $count++;
+ }
+ }
+ $cvt += $count;
+ } while ($count > 0);
+
+ # Reset the fallthroughs types to a single regex
+
+ @fallthroughs = (
+ 'fall(?:(?:s | |-)[Tt]|t)hr(?:ough|u|ew)'
+ );
+
+ # Convert the // <fallthrough> style comments followed by case/default:
+
+ do {
+ $count = 0;
+ pos($text) = 0;
+ foreach my $ft (@fallthroughs) {
+ my $regex = '(((?:[ \t]*\n)*[ \t]*)(//[ \t]*(?!\n)?\b' . "$ft" . '[ \t]*(?!\n)?\n(?:[ \t]*\n)*)([ \t]*))(?:case\s+|default\s*:)';
+ while ($text =~ m{${regex}}i) {
+ my $all_but_case = $1;
+ my $space_before = $2;
+ my $fallthrough = $3;
+ my $space_after = $4;
+ my $pos_before = $-[1];
+ my $pos_after = $+[3];
+
+ substr($text, $pos_before, $pos_after - $pos_before, "");
+ substr($text, $pos_before, 0, "\n${space_after}\tfallthrough;\n");
+ pos($text) = $pos_before;
+ $count++;
+ }
+ }
+ $cvt += $count;
+ } while ($count > 0);
+
+ # Convert /* fallthrough */ comment macro lines with trailing \
+
+ do {
+ $count = 0;
+ pos($text) = 0;
+ foreach my $ft (@fallthroughs) {
+ my $regex = '((?:[ \t]*\\\\\n)*([ \t]*)(/\*[ \t]*\b' . "$ft" . '[ \t]*\*/)([ \t]*))\\\\\n*([ \t]*(?:case\s+|default\s*:))';
+
+ while ($text =~ m{${regex}}i) {
+ my $all_but_case = $1;
+ my $space_before = $2;
+ my $fallthrough = $3;
+ my $space_after = $4;
+ my $pos_before = $-[2];
+ my $pos_after = $+[4];
+
+ my $oldline = "${space_before}${fallthrough}${space_after}";
+ my $len = length(expand_tabs($oldline));
+
+ my $newline = "${space_before}fallthrough;${space_after}";
+ $newline .= "\t" while (length(expand_tabs($newline)) < $len);
+
+ substr($text, $pos_before, $pos_after - $pos_before, "");
+ substr($text, $pos_before, 0, "$newline");
+ pos($text) = $pos_before;
+ $count++;
+ }
+ }
+ $cvt += $count;
+ } while ($count > 0);
+
+# write the file if something was changed
+
+ if ($cvt > 0) {
+ $modified = 1;
+
+ open($f, '>', $file)
+ or die "$P: Can't open $file for write\n";
+ print $f $text;
+ close($f);
+
+ print "fallthroughs: $cvt $file\n" if (!$quiet);
+ }
+}
+
+if ($modified && !$quiet) {
+ print <<EOT;
+
+Warning: these changes may not be correct.
+
+These changes should be carefully reviewed manually and not combined with
+any functional changes.
+
+Compile, build and test your changes.
+
+You should understand and be responsible for all object changes.
+
+Make sure you read Documentation/SubmittingPatches before sending
+any changes to reviewers, maintainers or mailing lists.
+EOT
+}
--
2.15.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 0/4] treewide: Add 'fallthrough' pseudo-keyword
2019-10-11 17:43 ` Joe Perches
@ 2019-10-11 17:46 ` Linus Torvalds
2019-10-12 2:14 ` Joe Perches
0 siblings, 1 reply; 11+ messages in thread
From: Linus Torvalds @ 2019-10-11 17:46 UTC (permalink / raw)
To: Joe Perches
Cc: linux-sctp, Miguel Ojeda, Kees Cook, Borislav Petkov,
H . Peter Anvin, Thomas Gleixner, Pavel Machek,
Gustavo A . R . Silva, Arnaldo Carvalho de Melo, Kan Liang,
Namhyung Kim, Jiri Olsa, Alexander Shishkin, Shawn Landden,
the arch/x86 maintainers, Linux Kernel Mailing List,
Nathan Chancellor, Nick Desaulniers, Andrew Morton, David Miller,
clang-built-linux, Jonathan Corbet, Vlad Yasevich, Neil Horman,
Marcelo Ricardo Leitner, open list:DOCUMENTATION, Netdev
On Fri, Oct 11, 2019 at 10:43 AM Joe Perches <joe@perches.com> wrote:
>
> Shouldn't a conversion script be public somewhere?
I feel the ones that might want to do the conversion on their own are
the ones that don't necessarily trust the script.
But I don't even know if anybody does want to, I just feel it's an option.
Linus
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 0/4] treewide: Add 'fallthrough' pseudo-keyword
2019-10-11 16:29 ` [PATCH 0/4] treewide: Add 'fallthrough' pseudo-keyword Linus Torvalds
2019-10-11 17:43 ` Joe Perches
@ 2019-10-11 18:01 ` Miguel Ojeda
2019-10-11 22:07 ` Kees Cook
1 sibling, 1 reply; 11+ messages in thread
From: Miguel Ojeda @ 2019-10-11 18:01 UTC (permalink / raw)
To: Linus Torvalds
Cc: Joe Perches, linux-sctp, Kees Cook, Borislav Petkov,
H . Peter Anvin, Thomas Gleixner, Pavel Machek,
Gustavo A . R . Silva, Arnaldo Carvalho de Melo, Kan Liang,
Namhyung Kim, Jiri Olsa, Alexander Shishkin, Shawn Landden,
the arch/x86 maintainers, Linux Kernel Mailing List,
Nathan Chancellor, Nick Desaulniers, Andrew Morton, David Miller,
clang-built-linux, Jonathan Corbet, Vlad Yasevich, Neil Horman,
Marcelo Ricardo Leitner, open list:DOCUMENTATION, Netdev
Hi Linus,
On Fri, Oct 11, 2019 at 6:30 PM Linus Torvalds
<torvalds@linux-foundation.org> wrote:
>
> On Sat, Oct 5, 2019 at 9:46 AM Joe Perches <joe@perches.com> wrote:
> >
> > Add 'fallthrough' pseudo-keyword to enable the removal of comments
> > like '/* fallthrough */'.
>
> I applied patches 1-3 to my tree just to make it easier for people to
> start doing this. Maybe some people want to do the conversion on their
> own subsystem rather than with a global script, but even if not, this
> looks better as a "prepare for the future" series and I feel that if
> we're doing the "fallthrough" thing eventually, the sooner we do the
> prepwork the better.
>
> I'm a tiny bit worried that the actual conversion is just going to
> cause lots of pain for the stable people, but I'll not worry about it
> _too_ much. If the stable people decide that it's too painful for them
> to deal with the comment vs keyword model, they may want to backport
> these three patches too.
I was waiting for a v2 series to pick it up given we had some pending changes...
Cheers,
Miguel
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 0/4] treewide: Add 'fallthrough' pseudo-keyword
2019-10-11 18:01 ` Miguel Ojeda
@ 2019-10-11 22:07 ` Kees Cook
2019-10-11 22:26 ` Miguel Ojeda
0 siblings, 1 reply; 11+ messages in thread
From: Kees Cook @ 2019-10-11 22:07 UTC (permalink / raw)
To: Miguel Ojeda
Cc: Linus Torvalds, Joe Perches, linux-sctp, Borislav Petkov,
H . Peter Anvin, Thomas Gleixner, Pavel Machek,
Gustavo A . R . Silva, Arnaldo Carvalho de Melo, Kan Liang,
Namhyung Kim, Jiri Olsa, Alexander Shishkin, Shawn Landden,
the arch/x86 maintainers, Linux Kernel Mailing List,
Nathan Chancellor, Nick Desaulniers, Andrew Morton, David Miller,
clang-built-linux, Jonathan Corbet, Vlad Yasevich, Neil Horman,
Marcelo Ricardo Leitner, open list:DOCUMENTATION, Netdev
On Fri, Oct 11, 2019 at 08:01:42PM +0200, Miguel Ojeda wrote:
> Hi Linus,
>
> On Fri, Oct 11, 2019 at 6:30 PM Linus Torvalds
> <torvalds@linux-foundation.org> wrote:
> >
> > On Sat, Oct 5, 2019 at 9:46 AM Joe Perches <joe@perches.com> wrote:
> > >
> > > Add 'fallthrough' pseudo-keyword to enable the removal of comments
> > > like '/* fallthrough */'.
> >
> > I applied patches 1-3 to my tree just to make it easier for people to
> > start doing this. Maybe some people want to do the conversion on their
> > own subsystem rather than with a global script, but even if not, this
> > looks better as a "prepare for the future" series and I feel that if
> > we're doing the "fallthrough" thing eventually, the sooner we do the
> > prepwork the better.
> >
> > I'm a tiny bit worried that the actual conversion is just going to
> > cause lots of pain for the stable people, but I'll not worry about it
> > _too_ much. If the stable people decide that it's too painful for them
> > to deal with the comment vs keyword model, they may want to backport
> > these three patches too.
>
> I was waiting for a v2 series to pick it up given we had some pending changes...
Hmpf, looks like it's in torvalds/master now. Miguel, most of the changes
were related to the commit log, IIRC, so that ship has sailed. :( Can the
stuff in Documentation/ be improved with a follow-up patch, perhaps?
--
Kees Cook
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 0/4] treewide: Add 'fallthrough' pseudo-keyword
2019-10-11 22:07 ` Kees Cook
@ 2019-10-11 22:26 ` Miguel Ojeda
0 siblings, 0 replies; 11+ messages in thread
From: Miguel Ojeda @ 2019-10-11 22:26 UTC (permalink / raw)
To: Kees Cook
Cc: Linus Torvalds, Joe Perches, linux-sctp, Borislav Petkov,
H . Peter Anvin, Thomas Gleixner, Pavel Machek,
Gustavo A . R . Silva, Arnaldo Carvalho de Melo, Kan Liang,
Namhyung Kim, Jiri Olsa, Alexander Shishkin, Shawn Landden,
the arch/x86 maintainers, Linux Kernel Mailing List,
Nathan Chancellor, Nick Desaulniers, Andrew Morton, David Miller,
clang-built-linux, Jonathan Corbet, Vlad Yasevich, Neil Horman,
Marcelo Ricardo Leitner, open list:DOCUMENTATION, Netdev
On Sat, Oct 12, 2019 at 12:08 AM Kees Cook <keescook@chromium.org> wrote:
>
> On Fri, Oct 11, 2019 at 08:01:42PM +0200, Miguel Ojeda wrote:
> > Hi Linus,
> >
> > On Fri, Oct 11, 2019 at 6:30 PM Linus Torvalds
> > <torvalds@linux-foundation.org> wrote:
> > >
> > > On Sat, Oct 5, 2019 at 9:46 AM Joe Perches <joe@perches.com> wrote:
> > > >
> > > > Add 'fallthrough' pseudo-keyword to enable the removal of comments
> > > > like '/* fallthrough */'.
> > >
> > > I applied patches 1-3 to my tree just to make it easier for people to
> > > start doing this. Maybe some people want to do the conversion on their
> > > own subsystem rather than with a global script, but even if not, this
> > > looks better as a "prepare for the future" series and I feel that if
> > > we're doing the "fallthrough" thing eventually, the sooner we do the
> > > prepwork the better.
> > >
> > > I'm a tiny bit worried that the actual conversion is just going to
> > > cause lots of pain for the stable people, but I'll not worry about it
> > > _too_ much. If the stable people decide that it's too painful for them
> > > to deal with the comment vs keyword model, they may want to backport
> > > these three patches too.
> >
> > I was waiting for a v2 series to pick it up given we had some pending changes...
>
> Hmpf, looks like it's in torvalds/master now. Miguel, most of the changes
> were related to the commit log, IIRC, so that ship has sailed. :( Can the
> stuff in Documentation/ be improved with a follow-up patch, perhaps?
Linus seems to have applied some of the improvements to the commit
messages, but not those to the content (not sure why, since they were
also easy ones). But no worries, we will do those later :)
Cheers,
Miguel
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 0/4] treewide: Add 'fallthrough' pseudo-keyword
2019-10-11 17:46 ` Linus Torvalds
@ 2019-10-12 2:14 ` Joe Perches
0 siblings, 0 replies; 11+ messages in thread
From: Joe Perches @ 2019-10-12 2:14 UTC (permalink / raw)
To: Linus Torvalds
Cc: linux-sctp, Miguel Ojeda, Kees Cook, Borislav Petkov,
H . Peter Anvin, Thomas Gleixner, Pavel Machek,
Gustavo A . R . Silva, Arnaldo Carvalho de Melo, Kan Liang,
Namhyung Kim, Jiri Olsa, Alexander Shishkin, Shawn Landden,
the arch/x86 maintainers, Linux Kernel Mailing List,
Nathan Chancellor, Nick Desaulniers, Andrew Morton, David Miller,
clang-built-linux, Jonathan Corbet, Vlad Yasevich, Neil Horman,
Marcelo Ricardo Leitner, open list:DOCUMENTATION, Netdev
On Fri, 2019-10-11 at 10:46 -0700, Linus Torvalds wrote:
> On Fri, Oct 11, 2019 at 10:43 AM Joe Perches <joe@perches.com> wrote:
> > Shouldn't a conversion script be public somewhere?
>
> I feel the ones that might want to do the conversion on their own are
> the ones that don't necessarily trust the script.
>
> But I don't even know if anybody does want to, I just feel it's an option.
What's the harm in keeping the script in the
tree until it's no longer needed?
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2019-10-12 2:15 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-10-05 16:46 [PATCH 0/4] treewide: Add 'fallthrough' pseudo-keyword Joe Perches
2019-10-05 16:46 ` [PATCH 3/4] Documentation/process: Add fallthrough pseudo-keyword Joe Perches
2019-10-05 17:47 ` Miguel Ojeda
2019-10-09 21:51 ` Nick Desaulniers
2019-10-11 16:29 ` [PATCH 0/4] treewide: Add 'fallthrough' pseudo-keyword Linus Torvalds
2019-10-11 17:43 ` Joe Perches
2019-10-11 17:46 ` Linus Torvalds
2019-10-12 2:14 ` Joe Perches
2019-10-11 18:01 ` Miguel Ojeda
2019-10-11 22:07 ` Kees Cook
2019-10-11 22:26 ` Miguel Ojeda
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).