2022-05-09 01:52:46

by Mickaël Salaün

[permalink] [raw]
Subject: [PATCH v2 0/5] Fix clang-format configuration according to checkpatch.pl

Hi,

This series brings some improvements to the clang-format configuration
to make it compatible with the checkpatch.pl rules:
https://lore.kernel.org/r/[email protected]

I also found that the for_each issue has already been talk about here:
https://lore.kernel.org/lkml/CAHmME9ofzanQTBD_WYBRW49d+gM77rCdh8Utdk4+PM9n_bmKwA@mail.gmail.com/

I use these changes for Landlock.

This is based on v5.18-rc5.

Previous version:
https://lore.kernel.org/r/[email protected]

Regards,

Mickaël Salaün (5):
clang-format: Update and extend the for_each list with tools/
clang-format: Update to clang-format >= 6
clang-format: Fix goto labels indentation
clang-format: Fix empty curly braces
clang-format: Fix space after for_each macros

.clang-format | 216 +++++++++++++++++++++++++++++++++++++++-----------
1 file changed, 169 insertions(+), 47 deletions(-)


base-commit: 672c0c5173427e6b3e2a9bbb7be51ceeec78093a
--
2.35.1



2022-05-09 03:47:35

by Mickaël Salaün

[permalink] [raw]
Subject: [PATCH v2 5/5] clang-format: Fix space after for_each macros

Set SpaceBeforeParens to ControlStatementsExceptForEachMacros to not add
space between a for_each macro and the following parenthesis. This
option is available since clang-format-11 [1] and is in line with the
checkpatch.pl rules [2].

I found that this patch has also been sent by Brian Norris some weeks
ago [3].

Link: https://clang.llvm.org/docs/ClangFormatStyleOptions.html [1]
Link: https://lore.kernel.org/r/[email protected] [2]
Link: https://lore.kernel.org/lkml/[email protected]/ [3]
Cc: Miguel Ojeda <[email protected]>
Cc: Tom Rix <[email protected]>
Co-developed-by: Brian Norris <[email protected]>
Signed-off-by: Brian Norris <[email protected]>
Signed-off-by: Mickaël Salaün <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
---
.clang-format | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.clang-format b/.clang-format
index 235f7bb8f84a..1e083df1a689 100644
--- a/.clang-format
+++ b/.clang-format
@@ -1,6 +1,6 @@
# SPDX-License-Identifier: GPL-2.0
#
-# clang-format configuration file. Intended for clang-format >= 6.
+# clang-format configuration file. Intended for clang-format >= 11.
#
# For more information, see:
#
@@ -667,7 +667,7 @@ SpaceAfterTemplateKeyword: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
-SpaceBeforeParens: ControlStatements
+SpaceBeforeParens: ControlStatementsExceptForEachMacros
SpaceBeforeRangeBasedForLoopColon: true
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
--
2.35.1


2022-05-09 07:49:55

by Mickaël Salaün

[permalink] [raw]
Subject: [PATCH v2 4/5] clang-format: Fix empty curly braces

SplitEmptyFunction [1] should be false to not add a new line in an empty
function body. This follows the current kernel coding style.

Link: https://clang.llvm.org/docs/ClangFormatStyleOptions.html [1]
Cc: Miguel Ojeda <[email protected]>
Cc: Tom Rix <[email protected]>
Signed-off-by: Mickaël Salaün <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
---
.clang-format | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.clang-format b/.clang-format
index 30f68219c09e..235f7bb8f84a 100644
--- a/.clang-format
+++ b/.clang-format
@@ -41,7 +41,7 @@ BraceWrapping:
BeforeCatch: false
BeforeElse: false
IndentBraces: false
- SplitEmptyFunction: true
+ SplitEmptyFunction: false
SplitEmptyRecord: true
SplitEmptyNamespace: true
BreakBeforeBinaryOperators: None
--
2.35.1


2022-05-09 08:03:20

by Mickaël Salaün

[permalink] [raw]
Subject: [PATCH v2 1/5] clang-format: Update and extend the for_each list with tools/

Add tools/ to the shell fragment generating the for_each list and update
it. This is useful to format files in the tools directory (e.g.
selftests) with the same coding style as the kernel.

Cc: Miguel Ojeda <[email protected]>
Cc: Tom Rix <[email protected]>
Signed-off-by: Mickaël Salaün <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
---

Changes since v1:
* Update the exception list with v5.18-rc5.
---
.clang-format | 177 ++++++++++++++++++++++++++++++++++++++++++--------
1 file changed, 149 insertions(+), 28 deletions(-)

diff --git a/.clang-format b/.clang-format
index fa959436bcfd..70d4e7ec4cf9 100644
--- a/.clang-format
+++ b/.clang-format
@@ -65,36 +65,53 @@ ExperimentalAutoDetectBinPacking: false
#FixNamespaceComments: false # Unknown to clang-format-4.0

# Taken from:
-# git grep -h '^#define [^[:space:]]*for_each[^[:space:]]*(' include/ \
+# git grep -h '^#define [^[:space:]]*for_each[^[:space:]]*(' include/ tools/ \
# | sed "s,^#define \([^[:space:]]*for_each[^[:space:]]*\)(.*$, - '\1'," \
# | sort | uniq
ForEachMacros:
+ - '__ata_qc_for_each'
+ - '__bio_for_each_bvec'
+ - '__bio_for_each_segment'
+ - '__evlist__for_each_entry'
+ - '__evlist__for_each_entry_continue'
+ - '__evlist__for_each_entry_from'
+ - '__evlist__for_each_entry_reverse'
+ - '__evlist__for_each_entry_safe'
+ - '__for_each_mem_range'
+ - '__for_each_mem_range_rev'
+ - '__for_each_thread'
+ - '__hlist_for_each_rcu'
+ - '__map__for_each_symbol_by_name'
+ - '__perf_evlist__for_each_entry'
+ - '__perf_evlist__for_each_entry_reverse'
+ - '__perf_evlist__for_each_entry_safe'
+ - '__rq_for_each_bio'
+ - '__shost_for_each_device'
- 'apei_estatus_for_each_section'
- 'ata_for_each_dev'
- 'ata_for_each_link'
- - '__ata_qc_for_each'
- 'ata_qc_for_each'
- 'ata_qc_for_each_raw'
- 'ata_qc_for_each_with_internal'
- 'ax25_for_each'
- 'ax25_uid_for_each'
- - '__bio_for_each_bvec'
- 'bio_for_each_bvec'
- 'bio_for_each_bvec_all'
+ - 'bio_for_each_folio_all'
- 'bio_for_each_integrity_vec'
- - '__bio_for_each_segment'
- 'bio_for_each_segment'
- 'bio_for_each_segment_all'
- 'bio_list_for_each'
- 'bip_for_each_vec'
- - 'bitmap_for_each_clear_region'
- - 'bitmap_for_each_set_region'
- - 'blkg_for_each_descendant_post'
- - 'blkg_for_each_descendant_pre'
- - 'blk_queue_for_each_rl'
- 'bond_for_each_slave'
- 'bond_for_each_slave_rcu'
+ - 'bpf__perf_for_each_map'
+ - 'bpf__perf_for_each_map_named'
- 'bpf_for_each_spilled_reg'
+ - 'bpf_object__for_each_map'
+ - 'bpf_object__for_each_program'
+ - 'bpf_object__for_each_safe'
+ - 'bpf_perf_object__for_each'
- 'btree_for_each_safe128'
- 'btree_for_each_safe32'
- 'btree_for_each_safe64'
@@ -102,6 +119,7 @@ ForEachMacros:
- 'card_for_each_dev'
- 'cgroup_taskset_for_each'
- 'cgroup_taskset_for_each_leader'
+ - 'cpufreq_for_each_efficient_entry_idx'
- 'cpufreq_for_each_entry'
- 'cpufreq_for_each_entry_idx'
- 'cpufreq_for_each_valid_entry'
@@ -109,9 +127,22 @@ ForEachMacros:
- 'css_for_each_child'
- 'css_for_each_descendant_post'
- 'css_for_each_descendant_pre'
+ - 'damon_for_each_region'
+ - 'damon_for_each_region_safe'
+ - 'damon_for_each_scheme'
+ - 'damon_for_each_scheme_safe'
+ - 'damon_for_each_target'
+ - 'damon_for_each_target_safe'
+ - 'data__for_each_file'
+ - 'data__for_each_file_new'
+ - 'data__for_each_file_start'
- 'device_for_each_child_node'
- 'displayid_iter_for_each'
+ - 'dma_fence_array_for_each'
- 'dma_fence_chain_for_each'
+ - 'dma_fence_unwrap_for_each'
+ - 'dma_resv_for_each_fence'
+ - 'dma_resv_for_each_fence_unlocked'
- 'do_for_each_ftrace_op'
- 'drm_atomic_crtc_for_each_plane'
- 'drm_atomic_crtc_state_for_each_plane'
@@ -135,6 +166,25 @@ ForEachMacros:
- 'drm_mm_for_each_node'
- 'drm_mm_for_each_node_in_range'
- 'drm_mm_for_each_node_safe'
+ - 'dsa_switch_for_each_available_port'
+ - 'dsa_switch_for_each_cpu_port'
+ - 'dsa_switch_for_each_port'
+ - 'dsa_switch_for_each_port_continue_reverse'
+ - 'dsa_switch_for_each_port_safe'
+ - 'dsa_switch_for_each_user_port'
+ - 'dsa_tree_for_each_user_port'
+ - 'dso__for_each_symbol'
+ - 'dsos__for_each_with_build_id'
+ - 'elf_hash_for_each_possible'
+ - 'elf_section__for_each_rel'
+ - 'elf_section__for_each_rela'
+ - 'elf_symtab__for_each_symbol'
+ - 'evlist__for_each_cpu'
+ - 'evlist__for_each_entry'
+ - 'evlist__for_each_entry_continue'
+ - 'evlist__for_each_entry_from'
+ - 'evlist__for_each_entry_reverse'
+ - 'evlist__for_each_entry_safe'
- 'flow_action_for_each'
- 'for_each_acpi_dev_match'
- 'for_each_active_dev_scope'
@@ -142,8 +192,11 @@ ForEachMacros:
- 'for_each_active_iommu'
- 'for_each_aggr_pgid'
- 'for_each_available_child_of_node'
+ - 'for_each_bench'
- 'for_each_bio'
- 'for_each_board_func_rsrc'
+ - 'for_each_btf_ext_rec'
+ - 'for_each_btf_ext_sec'
- 'for_each_bvec'
- 'for_each_card_auxs'
- 'for_each_card_auxs_safe'
@@ -159,17 +212,22 @@ ForEachMacros:
- 'for_each_child_of_node'
- 'for_each_clear_bit'
- 'for_each_clear_bit_from'
+ - 'for_each_clear_bitrange'
+ - 'for_each_clear_bitrange_from'
+ - 'for_each_cmd'
- 'for_each_cmsghdr'
+ - 'for_each_collection'
+ - 'for_each_comp_order'
- 'for_each_compatible_node'
- 'for_each_component_dais'
- 'for_each_component_dais_safe'
- - 'for_each_comp_order'
- 'for_each_console'
- 'for_each_cpu'
- 'for_each_cpu_and'
- 'for_each_cpu_not'
- 'for_each_cpu_wrap'
- 'for_each_dapm_widgets'
+ - 'for_each_dedup_cand'
- 'for_each_dev_addr'
- 'for_each_dev_scope'
- 'for_each_dma_cap_mask'
@@ -179,13 +237,14 @@ ForEachMacros:
- 'for_each_dpcm_fe'
- 'for_each_drhd_unit'
- 'for_each_dss_dev'
- - 'for_each_dtpm_table'
- 'for_each_efi_memory_desc'
- 'for_each_efi_memory_desc_in_map'
- 'for_each_element'
- 'for_each_element_extid'
- 'for_each_element_id'
- 'for_each_endpoint_of_node'
+ - 'for_each_event'
+ - 'for_each_event_tps'
- 'for_each_evictable_lru'
- 'for_each_fib6_node_rt_rcu'
- 'for_each_fib6_walker_rt'
@@ -194,30 +253,35 @@ ForEachMacros:
- 'for_each_free_mem_range'
- 'for_each_free_mem_range_reverse'
- 'for_each_func_rsrc'
+ - 'for_each_group_evsel'
+ - 'for_each_group_member'
- 'for_each_hstate'
- 'for_each_if'
+ - 'for_each_inject_fn'
+ - 'for_each_insn'
+ - 'for_each_insn_prefix'
+ - 'for_each_intid'
- 'for_each_iommu'
- 'for_each_ip_tunnel_rcu'
- 'for_each_irq_nr'
+ - 'for_each_lang'
- 'for_each_link_codecs'
- 'for_each_link_cpus'
- 'for_each_link_platforms'
- 'for_each_lru'
- 'for_each_matching_node'
- 'for_each_matching_node_and_match'
- - 'for_each_member'
- - 'for_each_memcg_cache_index'
- 'for_each_mem_pfn_range'
- - '__for_each_mem_range'
- 'for_each_mem_range'
- - '__for_each_mem_range_rev'
- 'for_each_mem_range_rev'
- 'for_each_mem_region'
+ - 'for_each_member'
+ - 'for_each_memory'
- 'for_each_migratetype_order'
- - 'for_each_msi_entry'
- - 'for_each_msi_entry_safe'
+ - 'for_each_missing_reg'
- 'for_each_net'
- 'for_each_net_continue_reverse'
+ - 'for_each_net_rcu'
- 'for_each_netdev'
- 'for_each_netdev_continue'
- 'for_each_netdev_continue_rcu'
@@ -227,12 +291,13 @@ ForEachMacros:
- 'for_each_netdev_rcu'
- 'for_each_netdev_reverse'
- 'for_each_netdev_safe'
- - 'for_each_net_rcu'
- 'for_each_new_connector_in_state'
- 'for_each_new_crtc_in_state'
- 'for_each_new_mst_mgr_in_state'
- 'for_each_new_plane_in_state'
+ - 'for_each_new_plane_in_state_reverse'
- 'for_each_new_private_obj_in_state'
+ - 'for_each_new_reg'
- 'for_each_node'
- 'for_each_node_by_name'
- 'for_each_node_by_type'
@@ -248,20 +313,20 @@ ForEachMacros:
- 'for_each_old_connector_in_state'
- 'for_each_old_crtc_in_state'
- 'for_each_old_mst_mgr_in_state'
+ - 'for_each_old_plane_in_state'
+ - 'for_each_old_private_obj_in_state'
- 'for_each_oldnew_connector_in_state'
- 'for_each_oldnew_crtc_in_state'
- 'for_each_oldnew_mst_mgr_in_state'
- 'for_each_oldnew_plane_in_state'
- 'for_each_oldnew_plane_in_state_reverse'
- 'for_each_oldnew_private_obj_in_state'
- - 'for_each_old_plane_in_state'
- - 'for_each_old_private_obj_in_state'
- 'for_each_online_cpu'
- 'for_each_online_node'
- 'for_each_online_pgdat'
+ - 'for_each_path'
- 'for_each_pci_bridge'
- 'for_each_pci_dev'
- - 'for_each_pci_msi_entry'
- 'for_each_pcm_streams'
- 'for_each_physmem_range'
- 'for_each_populated_zone'
@@ -269,6 +334,7 @@ ForEachMacros:
- 'for_each_present_cpu'
- 'for_each_prime_number'
- 'for_each_prime_number_from'
+ - 'for_each_probe_cache_entry'
- 'for_each_process'
- 'for_each_process_thread'
- 'for_each_prop_codec_conf'
@@ -278,6 +344,8 @@ ForEachMacros:
- 'for_each_prop_dlc_cpus'
- 'for_each_prop_dlc_platforms'
- 'for_each_property_of_node'
+ - 'for_each_reg'
+ - 'for_each_reg_filtered'
- 'for_each_registered_fb'
- 'for_each_requested_gpio'
- 'for_each_requested_gpio_in_range'
@@ -287,8 +355,12 @@ ForEachMacros:
- 'for_each_rtd_components'
- 'for_each_rtd_cpu_dais'
- 'for_each_rtd_dais'
+ - 'for_each_script'
+ - 'for_each_sec'
- 'for_each_set_bit'
- 'for_each_set_bit_from'
+ - 'for_each_set_bitrange'
+ - 'for_each_set_bitrange_from'
- 'for_each_set_clump8'
- 'for_each_sg'
- 'for_each_sg_dma_page'
@@ -297,18 +369,25 @@ ForEachMacros:
- 'for_each_sgtable_dma_sg'
- 'for_each_sgtable_page'
- 'for_each_sgtable_sg'
+ - 'for_each_shell_test'
- 'for_each_sibling_event'
- 'for_each_subelement'
- 'for_each_subelement_extid'
- 'for_each_subelement_id'
- - '__for_each_thread'
+ - 'for_each_sublist'
+ - 'for_each_subsystem'
+ - 'for_each_supported_activate_fn'
+ - 'for_each_supported_inject_fn'
+ - 'for_each_test'
- 'for_each_thread'
+ - 'for_each_token'
- 'for_each_unicast_dest_pgid'
- 'for_each_vsi'
- 'for_each_wakeup_source'
- 'for_each_zone'
- 'for_each_zone_zonelist'
- 'for_each_zone_zonelist_nodemask'
+ - 'func_for_each_insn'
- 'fwnode_for_each_available_child_node'
- 'fwnode_for_each_child_node'
- 'fwnode_graph_for_each_endpoint'
@@ -322,7 +401,13 @@ ForEachMacros:
- 'hash_for_each_possible_safe'
- 'hash_for_each_rcu'
- 'hash_for_each_safe'
+ - 'hashmap__for_each_entry'
+ - 'hashmap__for_each_entry_safe'
+ - 'hashmap__for_each_key_entry'
+ - 'hashmap__for_each_key_entry_safe'
- 'hctx_for_each_ctx'
+ - 'hists__for_each_format'
+ - 'hists__for_each_sort_list'
- 'hlist_bl_for_each_entry'
- 'hlist_bl_for_each_entry_rcu'
- 'hlist_bl_for_each_entry_safe'
@@ -338,7 +423,6 @@ ForEachMacros:
- 'hlist_for_each_entry_rcu_notrace'
- 'hlist_for_each_entry_safe'
- 'hlist_for_each_entry_srcu'
- - '__hlist_for_each_rcu'
- 'hlist_for_each_safe'
- 'hlist_nulls_for_each_entry'
- 'hlist_nulls_for_each_entry_from'
@@ -346,9 +430,6 @@ ForEachMacros:
- 'hlist_nulls_for_each_entry_safe'
- 'i3c_bus_for_each_i2cdev'
- 'i3c_bus_for_each_i3cdev'
- - 'ide_host_for_each_port'
- - 'ide_port_for_each_dev'
- - 'ide_port_for_each_present_dev'
- 'idr_for_each_entry'
- 'idr_for_each_entry_continue'
- 'idr_for_each_entry_continue_ul'
@@ -356,7 +437,12 @@ ForEachMacros:
- 'in_dev_for_each_ifa_rcu'
- 'in_dev_for_each_ifa_rtnl'
- 'inet_bind_bucket_for_each'
+ - 'inet_lhash2_for_each_icsk'
+ - 'inet_lhash2_for_each_icsk_continue'
- 'inet_lhash2_for_each_icsk_rcu'
+ - 'intlist__for_each_entry'
+ - 'intlist__for_each_entry_safe'
+ - 'kcore_copy__for_each_phdr'
- 'key_for_each'
- 'key_for_each_safe'
- 'klp_for_each_func'
@@ -367,7 +453,9 @@ ForEachMacros:
- 'klp_for_each_object_static'
- 'kunit_suite_for_each_test_case'
- 'kvm_for_each_memslot'
+ - 'kvm_for_each_memslot_in_gfn_range'
- 'kvm_for_each_vcpu'
+ - 'libbpf_nla_for_each_attr'
- 'list_for_each'
- 'list_for_each_codec'
- 'list_for_each_codec_safe'
@@ -387,6 +475,7 @@ ForEachMacros:
- 'list_for_each_entry_safe_from'
- 'list_for_each_entry_safe_reverse'
- 'list_for_each_entry_srcu'
+ - 'list_for_each_from'
- 'list_for_each_prev'
- 'list_for_each_prev_safe'
- 'list_for_each_safe'
@@ -394,11 +483,18 @@ ForEachMacros:
- 'llist_for_each_entry'
- 'llist_for_each_entry_safe'
- 'llist_for_each_safe'
+ - 'map__for_each_symbol'
+ - 'map__for_each_symbol_by_name'
+ - 'map_for_each_event'
+ - 'map_for_each_metric'
+ - 'maps__for_each_entry'
+ - 'maps__for_each_entry_safe'
- 'mci_for_each_dimm'
- 'media_device_for_each_entity'
- 'media_device_for_each_intf'
- 'media_device_for_each_link'
- 'media_device_for_each_pad'
+ - 'msi_for_each_desc'
- 'nanddev_io_for_each_page'
- 'netdev_for_each_lower_dev'
- 'netdev_for_each_lower_private'
@@ -423,6 +519,20 @@ ForEachMacros:
- 'pcl_for_each_chunk'
- 'pcl_for_each_segment'
- 'pcm_for_each_format'
+ - 'perf_config_items__for_each_entry'
+ - 'perf_config_sections__for_each_entry'
+ - 'perf_config_set__for_each_entry'
+ - 'perf_cpu_map__for_each_cpu'
+ - 'perf_evlist__for_each_entry'
+ - 'perf_evlist__for_each_entry_reverse'
+ - 'perf_evlist__for_each_entry_safe'
+ - 'perf_evlist__for_each_evsel'
+ - 'perf_evlist__for_each_mmap'
+ - 'perf_hpp_list__for_each_format'
+ - 'perf_hpp_list__for_each_format_safe'
+ - 'perf_hpp_list__for_each_sort_list'
+ - 'perf_hpp_list__for_each_sort_list_safe'
+ - 'perf_pmu__for_each_hybrid_pmu'
- 'ping_portaddr_for_each_entry'
- 'plist_for_each'
- 'plist_for_each_continue'
@@ -442,6 +552,7 @@ ForEachMacros:
- 'rdma_for_each_block'
- 'rdma_for_each_port'
- 'rdma_umem_for_each_dma_block'
+ - 'resort_rb__for_each_entry'
- 'resource_list_for_each_entry'
- 'resource_list_for_each_entry_safe'
- 'rhl_for_each_entry_rcu'
@@ -455,15 +566,18 @@ ForEachMacros:
- 'rht_for_each_from'
- 'rht_for_each_rcu'
- 'rht_for_each_rcu_from'
- - '__rq_for_each_bio'
- 'rq_for_each_bvec'
- 'rq_for_each_segment'
+ - 'rq_list_for_each'
+ - 'rq_list_for_each_safe'
- 'scsi_for_each_prot_sg'
- 'scsi_for_each_sg'
- 'sctp_for_each_hentry'
- 'sctp_skb_for_each'
+ - 'sec_for_each_insn'
+ - 'sec_for_each_insn_continue'
+ - 'sec_for_each_insn_from'
- 'shdma_for_each_chan'
- - '__shost_for_each_device'
- 'shost_for_each_device'
- 'sk_for_each'
- 'sk_for_each_bound'
@@ -480,7 +594,13 @@ ForEachMacros:
- 'snd_soc_dapm_widget_for_each_path_safe'
- 'snd_soc_dapm_widget_for_each_sink_path'
- 'snd_soc_dapm_widget_for_each_source_path'
+ - 'strlist__for_each_entry'
+ - 'strlist__for_each_entry_safe'
+ - 'sym_for_each_insn'
+ - 'sym_for_each_insn_continue_reverse'
+ - 'symbols__for_each_entry'
- 'tb_property_for_each'
+ - 'tcf_act_for_each_action'
- 'tcf_exts_for_each_action'
- 'udp_portaddr_for_each_entry'
- 'udp_portaddr_for_each_entry_rcu'
@@ -504,6 +624,7 @@ ForEachMacros:
- 'xbc_node_for_each_array_value'
- 'xbc_node_for_each_child'
- 'xbc_node_for_each_key_value'
+ - 'xbc_node_for_each_subkey'
- 'zorro_for_each_dev'

#IncludeBlocks: Preserve # Unknown to clang-format-5.0
--
2.35.1


2022-05-09 08:26:16

by Mickaël Salaün

[permalink] [raw]
Subject: [PATCH v2 2/5] clang-format: Update to clang-format >= 6

We get new interesting formating with clang-format greater or equal to 6
as stated in the removed comments. Miguel Ojeda suggested to even move
the minimal clang-format version to 11, which is the minimum LLVM
supported at the moment [1].

Automatically updated with:
sed -i 's/^\(\s*\)#\(\S*\s\+\S*\) # Unknown to clang-format.*/\1\2/' .clang-format

Link: https://lore.kernel.org/r/CANiq72nLOfmEt-CZBmm2ouEB_x6Jm9ggDVFCVJxYxKw7O0LTzQ@mail.gmail.com [1]
Cc: Miguel Ojeda <[email protected]>
Cc: Tom Rix <[email protected]>
Signed-off-by: Mickaël Salaün <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
---

Changes since v1:
* Update documentation header with clang-format >= 6.
---
.clang-format | 36 ++++++++++++++++++------------------
1 file changed, 18 insertions(+), 18 deletions(-)

diff --git a/.clang-format b/.clang-format
index 70d4e7ec4cf9..3bc1bdf0f3a1 100644
--- a/.clang-format
+++ b/.clang-format
@@ -1,6 +1,6 @@
# SPDX-License-Identifier: GPL-2.0
#
-# clang-format configuration file. Intended for clang-format >= 4.
+# clang-format configuration file. Intended for clang-format >= 6.
#
# For more information, see:
#
@@ -13,7 +13,7 @@ AccessModifierOffset: -4
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
-#AlignEscapedNewlines: Left # Unknown to clang-format-4.0
+AlignEscapedNewlines: Left
AlignOperands: true
AlignTrailingComments: false
AllowAllParametersOfDeclarationOnNextLine: false
@@ -37,24 +37,24 @@ BraceWrapping:
AfterObjCDeclaration: false
AfterStruct: false
AfterUnion: false
- #AfterExternBlock: false # Unknown to clang-format-5.0
+ AfterExternBlock: false
BeforeCatch: false
BeforeElse: false
IndentBraces: false
- #SplitEmptyFunction: true # Unknown to clang-format-4.0
- #SplitEmptyRecord: true # Unknown to clang-format-4.0
- #SplitEmptyNamespace: true # Unknown to clang-format-4.0
+ SplitEmptyFunction: true
+ SplitEmptyRecord: true
+ SplitEmptyNamespace: true
BreakBeforeBinaryOperators: None
BreakBeforeBraces: Custom
-#BreakBeforeInheritanceComma: false # Unknown to clang-format-4.0
+BreakBeforeInheritanceComma: false
BreakBeforeTernaryOperators: false
BreakConstructorInitializersBeforeComma: false
-#BreakConstructorInitializers: BeforeComma # Unknown to clang-format-4.0
+BreakConstructorInitializers: BeforeComma
BreakAfterJavaFieldAnnotations: false
BreakStringLiterals: false
ColumnLimit: 80
CommentPragmas: '^ IWYU pragma:'
-#CompactNamespaces: false # Unknown to clang-format-4.0
+CompactNamespaces: false
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ConstructorInitializerIndentWidth: 8
ContinuationIndentWidth: 8
@@ -62,7 +62,7 @@ Cpp11BracedListStyle: false
DerivePointerAlignment: false
DisableFormat: false
ExperimentalAutoDetectBinPacking: false
-#FixNamespaceComments: false # Unknown to clang-format-4.0
+FixNamespaceComments: false

# Taken from:
# git grep -h '^#define [^[:space:]]*for_each[^[:space:]]*(' include/ tools/ \
@@ -627,13 +627,13 @@ ForEachMacros:
- 'xbc_node_for_each_subkey'
- 'zorro_for_each_dev'

-#IncludeBlocks: Preserve # Unknown to clang-format-5.0
+IncludeBlocks: Preserve
IncludeCategories:
- Regex: '.*'
Priority: 1
IncludeIsMainRegex: '(Test)?$'
IndentCaseLabels: false
-#IndentPPDirectives: None # Unknown to clang-format-5.0
+IndentPPDirectives: None
IndentWidth: 8
IndentWrappedFunctionNames: false
JavaScriptQuotes: Leave
@@ -643,13 +643,13 @@ MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
-#ObjCBinPackProtocolList: Auto # Unknown to clang-format-5.0
+ObjCBinPackProtocolList: Auto
ObjCBlockIndentWidth: 8
ObjCSpaceAfterProperty: true
ObjCSpaceBeforeProtocolList: true

# Taken from git's rules
-#PenaltyBreakAssignment: 10 # Unknown to clang-format-4.0
+PenaltyBreakAssignment: 10
PenaltyBreakBeforeFirstCallParameter: 30
PenaltyBreakComment: 10
PenaltyBreakFirstLessLess: 0
@@ -660,14 +660,14 @@ PenaltyReturnTypeOnItsOwnLine: 60
PointerAlignment: Right
ReflowComments: false
SortIncludes: false
-#SortUsingDeclarations: false # Unknown to clang-format-4.0
+SortUsingDeclarations: false
SpaceAfterCStyleCast: false
SpaceAfterTemplateKeyword: true
SpaceBeforeAssignmentOperators: true
-#SpaceBeforeCtorInitializerColon: true # Unknown to clang-format-5.0
-#SpaceBeforeInheritanceColon: true # Unknown to clang-format-5.0
+SpaceBeforeCtorInitializerColon: true
+SpaceBeforeInheritanceColon: true
SpaceBeforeParens: ControlStatements
-#SpaceBeforeRangeBasedForLoopColon: true # Unknown to clang-format-5.0
+SpaceBeforeRangeBasedForLoopColon: true
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
--
2.35.1


2022-05-09 08:57:31

by Mickaël Salaün

[permalink] [raw]
Subject: [PATCH v2 3/5] clang-format: Fix goto labels indentation

Thanks to IndentGotoLabels introduced with clang-format-10 [1], we can
avoid goto labels identation. This follows the current coding style and
it is then in line with the checkpatch.pl rules [2].

Link: https://clang.llvm.org/docs/ClangFormatStyleOptions.html [1]
Link: https://lore.kernel.org/r/[email protected] [2]
Cc: Miguel Ojeda <[email protected]>
Cc: Tom Rix <[email protected]>
Signed-off-by: Mickaël Salaün <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
---
.clang-format | 1 +
1 file changed, 1 insertion(+)

diff --git a/.clang-format b/.clang-format
index 3bc1bdf0f3a1..30f68219c09e 100644
--- a/.clang-format
+++ b/.clang-format
@@ -633,6 +633,7 @@ IncludeCategories:
Priority: 1
IncludeIsMainRegex: '(Test)?$'
IndentCaseLabels: false
+IndentGotoLabels: false
IndentPPDirectives: None
IndentWidth: 8
IndentWrappedFunctionNames: false
--
2.35.1


2022-05-11 15:53:55

by Joe Perches

[permalink] [raw]
Subject: Re: [PATCH v2 5/5] clang-format: Fix space after for_each macros

On Fri, 2022-05-06 at 18:01 +0200, Micka?l Sala?n wrote:
> Set SpaceBeforeParens to ControlStatementsExceptForEachMacros to not add
> space between a for_each macro and the following parenthesis. This
> option is available since clang-format-11 [1] and is in line with the
> checkpatch.pl rules [2].

If this is applied, could the .clang_format ForEachMacros:
block be removed?



2022-05-11 18:23:54

by Joe Perches

[permalink] [raw]
Subject: Re: [PATCH v2 5/5] clang-format: Fix space after for_each macros

On Wed, 2022-05-11 at 19:34 +0200, Micka?l Sala?n wrote:
> On 11/05/2022 17:40, Joe Perches wrote:
> > On Fri, 2022-05-06 at 18:01 +0200, Micka?l Sala?n wrote:
> > > Set SpaceBeforeParens to ControlStatementsExceptForEachMacros to not add
> > > space between a for_each macro and the following parenthesis. This
> > > option is available since clang-format-11 [1] and is in line with the
> > > checkpatch.pl rules [2].
> >
> > If this is applied, could the .clang_format ForEachMacros:
> > block be removed?
>
> The ForEachMacros block is still required to not put the " {" on the
> next line.

Pity these aren't linked as many for_each macro definitions and uses
exist outside of the grep search paths.



2022-05-11 19:09:28

by Brian Norris

[permalink] [raw]
Subject: Re: [PATCH v2 0/5] Fix clang-format configuration according to checkpatch.pl

On Wed, May 11, 2022 at 8:29 AM Miguel Ojeda
<[email protected]> wrote:
> I am thinking
> of putting Brian as author and you as Co-developed-by for the last one
> to be fair (Brian: is this OK with you too?). Thanks!

I don't care at all either way; it's a pretty trivial thing, and I
only posted mine to kick the wheels a bit. I'm just happy Mickaël is
doing this :)

Regards,
Brian

2022-05-11 20:15:53

by Mickaël Salaün

[permalink] [raw]
Subject: Re: [PATCH v2 0/5] Fix clang-format configuration according to checkpatch.pl

Miguel, what do you think about this series? Do you plan to take it for
the next merge window? FYI, I plan to use it for Landlock [1] and send
it for the next merge window. Could you publish your pending
clang-format changes so that I can make sure everything is OK?

[1] https://lore.kernel.org/r/[email protected]

On 06/05/2022 18:01, Mickaël Salaün wrote:
> Hi,
>
> This series brings some improvements to the clang-format configuration
> to make it compatible with the checkpatch.pl rules:
> https://lore.kernel.org/r/[email protected]
>
> I also found that the for_each issue has already been talk about here:
> https://lore.kernel.org/lkml/CAHmME9ofzanQTBD_WYBRW49d+gM77rCdh8Utdk4+PM9n_bmKwA@mail.gmail.com/
>
> I use these changes for Landlock.
>
> This is based on v5.18-rc5.
>
> Previous version:
> https://lore.kernel.org/r/[email protected]
>
> Regards,
>
> Mickaël Salaün (5):
> clang-format: Update and extend the for_each list with tools/
> clang-format: Update to clang-format >= 6
> clang-format: Fix goto labels indentation
> clang-format: Fix empty curly braces
> clang-format: Fix space after for_each macros
>
> .clang-format | 216 +++++++++++++++++++++++++++++++++++++++-----------
> 1 file changed, 169 insertions(+), 47 deletions(-)
>
>
> base-commit: 672c0c5173427e6b3e2a9bbb7be51ceeec78093a

2022-05-11 22:03:14

by Miguel Ojeda

[permalink] [raw]
Subject: Re: [PATCH v2 0/5] Fix clang-format configuration according to checkpatch.pl

Hi Mickaël,

On Wed, May 11, 2022 at 4:19 PM Mickaël Salaün <[email protected]> wrote:
>
> Miguel, what do you think about this series? Do you plan to take it for
> the next merge window? FYI, I plan to use it for Landlock [1] and send
> it for the next merge window. Could you publish your pending
> clang-format changes so that I can make sure everything is OK?

It looked good to me overall (though it indeed conflicts with what I
was doing) -- I will take it for the next merge window. I am thinking
of putting Brian as author and you as Co-developed-by for the last one
to be fair (Brian: is this OK with you too?). Thanks!

Cheers,
Miguel

2022-05-12 01:20:16

by Mickaël Salaün

[permalink] [raw]
Subject: Re: [PATCH v2 5/5] clang-format: Fix space after for_each macros


On 11/05/2022 17:40, Joe Perches wrote:
> On Fri, 2022-05-06 at 18:01 +0200, Mickaël Salaün wrote:
>> Set SpaceBeforeParens to ControlStatementsExceptForEachMacros to not add
>> space between a for_each macro and the following parenthesis. This
>> option is available since clang-format-11 [1] and is in line with the
>> checkpatch.pl rules [2].
>
> If this is applied, could the .clang_format ForEachMacros:
> block be removed?

The ForEachMacros block is still required to not put the " {" on the
next line.

2022-05-12 04:36:47

by Mickaël Salaün

[permalink] [raw]
Subject: Re: [PATCH v2 0/5] Fix clang-format configuration according to checkpatch.pl


On 11/05/2022 17:29, Miguel Ojeda wrote:
> Hi Mickaël,
>
> On Wed, May 11, 2022 at 4:19 PM Mickaël Salaün <[email protected]> wrote:
>>
>> Miguel, what do you think about this series? Do you plan to take it for
>> the next merge window? FYI, I plan to use it for Landlock [1] and send
>> it for the next merge window. Could you publish your pending
>> clang-format changes so that I can make sure everything is OK?
>
> It looked good to me overall (though it indeed conflicts with what I
> was doing) -- I will take it for the next merge window.

Good. Please keep me in the loop, I would like to try your changes as
soon as possible (before you make a PR).

> I am thinking
> of putting Brian as author and you as Co-developed-by for the last one
> to be fair (Brian: is this OK with you too?).

Looks fair.

2022-05-21 18:53:41

by Joe Perches

[permalink] [raw]
Subject: Re: [PATCH v2 4/5] clang-format: Fix empty curly braces

On Fri, 2022-05-20 at 19:15 +0200, Miguel Ojeda wrote:
> On Fri, May 6, 2022 at 6:00 PM Micka?l Sala?n <[email protected]> wrote:
> >
> > SplitEmptyFunction [1] should be false to not add a new line in an empty
> > function body. This follows the current kernel coding style.
>
> I don't think this is correct. Checking headers in `include/linux/`, I
> see ~70 using {} (when not in the same line as the signature), and
> ~700 in different lines. In `kernel/`, it is even more pronounced: 4
> vs. ~200.
>
> Am I missing something?

historic vs recent uses ?

I think it's mostly a 'don't care' style.
It's not like there's a significant line count advantage.

Sometimes there is though for blocks like

#if CONFIG_FOO

void foo1(...);
void foo2(...);
...
void fooN(...);

#else

static inline void foo1(...) {}
static inline void foo2(...) {}
...
static inline void fooN(...) {}

#endif




2022-05-22 11:48:31

by Miguel Ojeda

[permalink] [raw]
Subject: Re: [PATCH v2 4/5] clang-format: Fix empty curly braces

On Fri, May 6, 2022 at 6:00 PM Mickaël Salaün <[email protected]> wrote:
>
> SplitEmptyFunction [1] should be false to not add a new line in an empty
> function body. This follows the current kernel coding style.

I don't think this is correct. Checking headers in `include/linux/`, I
see ~70 using {} (when not in the same line as the signature), and
~700 in different lines. In `kernel/`, it is even more pronounced: 4
vs. ~200.

Am I missing something?

Cheers,
Miguel

2022-05-22 23:02:46

by Miguel Ojeda

[permalink] [raw]
Subject: Re: [PATCH v2 4/5] clang-format: Fix empty curly braces

Hi Joe,

On Fri, May 20, 2022 at 7:24 PM Joe Perches <[email protected]> wrote:
>
> static inline void foo1(...) {}
> static inline void foo2(...) {}
> ...
> static inline void fooN(...) {}

Those are the non-wrapped-from-signature case, which are handled
before this option takes place, i.e. this option is about:

void f()
{}

vs.

void f()
{
}

For putting everything on the same line, we could adjust
`AllowShortFunctionsOnASingleLine` from `None` to `Empty`, though.

Cheers,
Miguel

2022-05-23 05:50:22

by Miguel Ojeda

[permalink] [raw]
Subject: Re: [PATCH v2 0/5] Fix clang-format configuration according to checkpatch.pl

On Fri, May 6, 2022 at 6:00 PM Mickaël Salaün <[email protected]> wrote:
>
> clang-format: Update and extend the for_each list with tools/
> clang-format: Update to clang-format >= 6
> clang-format: Fix goto labels indentation
> clang-format: Fix space after for_each macros

These 4 applied (with the mentioned changes, and on top of a few
cleanups to simplify the first patch etc.) in -next.

After -rc1, I will submit an RFC series with other clang-format 6..11
features that we can now enable but that merit more discussion.

Let's get the ball rolling! :)

Cheers,
Miguel

2022-05-23 06:06:21

by Joe Perches

[permalink] [raw]
Subject: Re: [PATCH v2 4/5] clang-format: Fix empty curly braces

On Fri, 2022-05-20 at 19:50 +0200, Miguel Ojeda wrote:
> Hi Joe,
>
> On Fri, May 20, 2022 at 7:24 PM Joe Perches <[email protected]> wrote:
> >
> > static inline void foo1(...) {}
> > static inline void foo2(...) {}
> > ...
> > static inline void fooN(...) {}
>
> Those are the non-wrapped-from-signature case, which are handled
> before this option takes place, i.e. this option is about:
>
> void f()
> {}
>
> vs.
>
> void f()
> {
> }
>
> For putting everything on the same line, we could adjust
> `AllowShortFunctionsOnASingleLine` from `None` to `Empty`, though.

As you wish.

I think it's more that there's no "one true style" issue than anything.



2022-05-23 06:59:23

by Miguel Ojeda

[permalink] [raw]
Subject: Re: [PATCH v2 3/5] clang-format: Fix goto labels indentation

On Fri, May 6, 2022 at 6:00 PM Mickaël Salaün <[email protected]> wrote:
>
> Thanks to IndentGotoLabels introduced with clang-format-10 [1], we can
> avoid goto labels identation. This follows the current coding style and
> it is then in line with the checkpatch.pl rules [2].

To be consistent, this should increase the minimum to clang-format-10
-- I will fix it on my side.

Cheers,
Miguel

2022-05-23 07:25:11

by Miguel Ojeda

[permalink] [raw]
Subject: Re: [PATCH v2 1/5] clang-format: Update and extend the for_each list with tools/

On Fri, May 6, 2022 at 6:00 PM Mickaël Salaün <[email protected]> wrote:
>
> + - '__ata_qc_for_each'
> - - '__ata_qc_for_each'

This change is likely there due to a locale difference between our
setups -- I will fix this by forcing the POSIX locale and then I will
adjust your commit.

Cheers,
Miguel

2022-05-23 07:55:50

by Miguel Ojeda

[permalink] [raw]
Subject: Re: [PATCH v2 4/5] clang-format: Fix empty curly braces

On Fri, May 20, 2022 at 8:00 PM Joe Perches <[email protected]> wrote:
>
> As you wish.
>
> I think it's more that there's no "one true style" issue than anything.

Indeed, there are many instances of both. Not sure which one we should pick.

Maybe everything in a line is less annoying in more cases for people
that want to automate formatting (and `clang-format` will wrap it if
it goes over the column limit anyway, and then it will split it in
several lines, so it is OK).

Cheers,
Miguel

2022-05-23 11:15:13

by Mickaël Salaün

[permalink] [raw]
Subject: Re: [PATCH v2 4/5] clang-format: Fix empty curly braces



On 20/05/2022 19:15, Miguel Ojeda wrote:
> On Fri, May 6, 2022 at 6:00 PM Mickaël Salaün <[email protected]> wrote:
>>
>> SplitEmptyFunction [1] should be false to not add a new line in an empty
>> function body. This follows the current kernel coding style.
>
> I don't think this is correct. Checking headers in `include/linux/`, I
> see ~70 using {} (when not in the same line as the signature), and
> ~700 in different lines. In `kernel/`, it is even more pronounced: 4
> vs. ~200.
>
> Am I missing something?

You're right, it is not consistent across all kernel code. Using
one-liners is easier but after a wider counting for *.c and *.h with
5.18 I get:
- 187 for "\n{ }\n"
- 196 for "\n{}\n"
- 1963 for ") *{}\n"
- 4554 for "\n{\n}"

Please ignore this patch, I'll do the same for my changes.

Regards,
Mickaël