All of lore.kernel.org
 help / color / mirror / Atom feed
* [sashal:spec 4/131] Diff in tools/kapi/src/extractor/vmlinux/binary_utils.rs:48:
@ 2025-12-21  3:57 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2025-12-21  3:57 UTC (permalink / raw)
  To: Sasha Levin; +Cc: oe-kbuild-all

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/sashal/linux.git spec
head:   d34c22a9d280338fc8a0f12fd5577e62f345503e
commit: 5b43072768b7c760c4421498125a39575340b306 [4/131] tools/kapi: Add kernel API specification extraction tool
config: x86_64-rhel-9.4-rust (https://download.01.org/0day-ci/archive/20251221/202512210455.fOiqaYU6-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
rustc: rustc 1.88.0 (6b00bc388 2025-06-23)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251221/202512210455.fOiqaYU6-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202512210455.fOiqaYU6-lkp@intel.com/

All errors (new ones prefixed by >>):

   PATH=/opt/cross/clang-20/bin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
   INFO PATH=/opt/cross/rustc-1.88.0-bindgen-0.72.1/cargo/bin:/opt/cross/clang-20/bin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
   /usr/bin/timeout -k 100 12h /usr/bin/make KCFLAGS= -fno-crash-diagnostics -Wno-error=return-type -Wreturn-type -funsigned-char -Wundef W=1 --keep-going LLVM=1 -j32 -C source O=/kbuild/obj/consumer/x86_64-rhel-9.4-rust ARCH=x86_64 SHELL=/bin/bash rustfmtcheck
   make: Entering directory '/kbuild/src/consumer'
   make[1]: Entering directory '/kbuild/obj/consumer/x86_64-rhel-9.4-rust'
>> Diff in tools/kapi/src/extractor/vmlinux/binary_utils.rs:48:
        }
    
        pub fn read_u32(&mut self) -> Option<u32> {
   -        self.read_bytes(4).map(|b| u32::from_le_bytes(b.try_into().unwrap()))
   +        self.read_bytes(4)
   +            .map(|b| u32::from_le_bytes(b.try_into().unwrap()))
        }
    
        pub fn read_u8(&mut self) -> Option<u8> {
   Diff in tools/kapi/src/extractor/vmlinux/binary_utils.rs:56:
        }
    
        pub fn read_i32(&mut self) -> Option<i32> {
   -        self.read_bytes(4).map(|b| i32::from_le_bytes(b.try_into().unwrap()))
   +        self.read_bytes(4)
   +            .map(|b| i32::from_le_bytes(b.try_into().unwrap()))
        }
    
        pub fn read_u64(&mut self) -> Option<u64> {
   Diff in tools/kapi/src/extractor/vmlinux/binary_utils.rs:63:
   -        self.read_bytes(8).map(|b| u64::from_le_bytes(b.try_into().unwrap()))
   +        self.read_bytes(8)
   +            .map(|b| u64::from_le_bytes(b.try_into().unwrap()))
        }
    
        pub fn read_i64(&mut self) -> Option<i64> {
   Diff in tools/kapi/src/extractor/vmlinux/binary_utils.rs:67:
   -        self.read_bytes(8).map(|b| i64::from_le_bytes(b.try_into().unwrap()))
   +        self.read_bytes(8)
   +            .map(|b| i64::from_le_bytes(b.try_into().unwrap()))
        }
    
        pub fn read_usize(&mut self) -> Option<usize> {
   Diff in tools/kapi/src/extractor/vmlinux/binary_utils.rs:101:
            }
            Some(result)
        }
   -
   -
    }
    
    // Structure layout definitions for calculating sizes
>> Diff in tools/kapi/src/extractor/vmlinux/binary_utils.rs:48:
        }
    
        pub fn read_u32(&mut self) -> Option<u32> {
   -        self.read_bytes(4).map(|b| u32::from_le_bytes(b.try_into().unwrap()))
   +        self.read_bytes(4)
   +            .map(|b| u32::from_le_bytes(b.try_into().unwrap()))
        }
    
        pub fn read_u8(&mut self) -> Option<u8> {
   Diff in tools/kapi/src/extractor/vmlinux/binary_utils.rs:56:
        }
    
        pub fn read_i32(&mut self) -> Option<i32> {
   -        self.read_bytes(4).map(|b| i32::from_le_bytes(b.try_into().unwrap()))
   +        self.read_bytes(4)
   +            .map(|b| i32::from_le_bytes(b.try_into().unwrap()))
        }
    
        pub fn read_u64(&mut self) -> Option<u64> {
   Diff in tools/kapi/src/extractor/vmlinux/binary_utils.rs:63:
   -        self.read_bytes(8).map(|b| u64::from_le_bytes(b.try_into().unwrap()))
   +        self.read_bytes(8)
   +            .map(|b| u64::from_le_bytes(b.try_into().unwrap()))
        }
    
        pub fn read_i64(&mut self) -> Option<i64> {
   Diff in tools/kapi/src/extractor/vmlinux/binary_utils.rs:67:
   -        self.read_bytes(8).map(|b| i64::from_le_bytes(b.try_into().unwrap()))
   +        self.read_bytes(8)
   +            .map(|b| i64::from_le_bytes(b.try_into().unwrap()))
        }
    
        pub fn read_usize(&mut self) -> Option<usize> {
   Diff in tools/kapi/src/extractor/vmlinux/binary_utils.rs:101:
            }
            Some(result)
        }
   -
   -
    }
    
    // Structure layout definitions for calculating sizes
>> Diff in tools/kapi/src/extractor/vmlinux/magic_finder.rs:1:
    // Magic markers for each section
   -pub const MAGIC_PARAM: u32 = 0x4B415031;    // 'KAP1'
   -pub const MAGIC_RETURN: u32 = 0x4B415232;   // 'KAR2'
   -pub const MAGIC_ERROR: u32 = 0x4B414533;    // 'KAE3'
   -pub const MAGIC_LOCK: u32 = 0x4B414C34;     // 'KAL4'
   +pub const MAGIC_PARAM: u32 = 0x4B415031; // 'KAP1'
   +pub const MAGIC_RETURN: u32 = 0x4B415232; // 'KAR2'
   +pub const MAGIC_ERROR: u32 = 0x4B414533; // 'KAE3'
   +pub const MAGIC_LOCK: u32 = 0x4B414C34; // 'KAL4'
    pub const MAGIC_CONSTRAINT: u32 = 0x4B414335; // 'KAC5'
   -pub const MAGIC_INFO: u32 = 0x4B414936;     // 'KAI6'
   -pub const MAGIC_SIGNAL: u32 = 0x4B415337;   // 'KAS7'
   -pub const MAGIC_SIGMASK: u32 = 0x4B414D38;  // 'KAM8'
   -pub const MAGIC_STRUCT: u32 = 0x4B415439;   // 'KAT9'
   -pub const MAGIC_EFFECT: u32 = 0x4B414641;   // 'KAFA'
   -pub const MAGIC_TRANS: u32 = 0x4B415442;    // 'KATB'
   -pub const MAGIC_CAP: u32 = 0x4B414343;      // 'KACC'
   +pub const MAGIC_INFO: u32 = 0x4B414936; // 'KAI6'
   +pub const MAGIC_SIGNAL: u32 = 0x4B415337; // 'KAS7'
   +pub const MAGIC_SIGMASK: u32 = 0x4B414D38; // 'KAM8'
   +pub const MAGIC_STRUCT: u32 = 0x4B415439; // 'KAT9'
   +pub const MAGIC_EFFECT: u32 = 0x4B414641; // 'KAFA'
   +pub const MAGIC_TRANS: u32 = 0x4B415442; // 'KATB'
   +pub const MAGIC_CAP: u32 = 0x4B414343; // 'KACC'
    
    pub struct MagicOffsets {
        pub param_offset: Option<usize>,
   Diff in tools/kapi/src/extractor/vmlinux/magic_finder.rs:57:
                match value {
                    MAGIC_PARAM if offsets.param_offset.is_none() => {
                        offsets.param_offset = Some(base_offset + i);
   -                },
   +                }
                    MAGIC_RETURN if offsets.return_offset.is_none() => {
                        offsets.return_offset = Some(base_offset + i);
   -                },
   +                }
                    MAGIC_ERROR if offsets.error_offset.is_none() => {
                        offsets.error_offset = Some(base_offset + i);
   -                },
   +                }
                    MAGIC_LOCK if offsets.lock_offset.is_none() => {
                        offsets.lock_offset = Some(base_offset + i);
   -                },
   +                }
                    MAGIC_CONSTRAINT if offsets.constraint_offset.is_none() => {
                        offsets.constraint_offset = Some(base_offset + i);
   -                },
   +                }
                    MAGIC_INFO if offsets.info_offset.is_none() => {
                        offsets.info_offset = Some(base_offset + i);
   -                },
   +                }
                    MAGIC_SIGNAL if offsets.signal_offset.is_none() => {
                        offsets.signal_offset = Some(base_offset + i);
   -                },
   +                }
                    MAGIC_SIGMASK if offsets.sigmask_offset.is_none() => {
                        offsets.sigmask_offset = Some(base_offset + i);
   -                },
   +                }
                    MAGIC_STRUCT if offsets.struct_offset.is_none() => {
                        offsets.struct_offset = Some(base_offset + i);
   -                },
   +                }
                    MAGIC_EFFECT if offsets.effect_offset.is_none() => {
                        offsets.effect_offset = Some(base_offset + i);
   -                },
   +                }
                    MAGIC_TRANS if offsets.trans_offset.is_none() => {
                        offsets.trans_offset = Some(base_offset + i);
   -                },
   +                }
                    MAGIC_CAP if offsets.cap_offset.is_none() => {
                        offsets.cap_offset = Some(base_offset + i);
   -                },
   +                }
                    _ => {}
                }
    
   Diff in tools/kapi/src/extractor/vmlinux/magic_finder.rs:100:
            offsets
        }
    }
   +
>> Diff in tools/kapi/src/extractor/vmlinux/mod.rs:1:
    use super::{
        ApiExtractor, ApiSpec, CapabilitySpec, ConstraintSpec, ErrorSpec, LockSpec, ParamSpec,
   -    ReturnSpec, SideEffectSpec, SignalMaskSpec, SignalSpec, StateTransitionSpec, StructSpec,
   -    StructFieldSpec,
   +    ReturnSpec, SideEffectSpec, SignalMaskSpec, SignalSpec, StateTransitionSpec, StructFieldSpec,
   +    StructSpec,
    };
    use crate::formatter::OutputFormatter;
    use anyhow::{Context, Result};
   Diff in tools/kapi/src/extractor/vmlinux/mod.rs:13:
    mod binary_utils;
    mod magic_finder;
    use binary_utils::{
   -    DataReader, addr_family_spec_layout_size, async_spec_layout_size, buffer_spec_layout_size,
   -    protocol_behavior_spec_layout_size, signal_mask_spec_layout_size,
   -    sizes, socket_state_spec_layout_size, struct_field_layout_size,
   +    addr_family_spec_layout_size, async_spec_layout_size, buffer_spec_layout_size,
   +    protocol_behavior_spec_layout_size, signal_mask_spec_layout_size, sizes,
   +    socket_state_spec_layout_size, struct_field_layout_size, DataReader,
    };
    
    // Helper to convert empty strings to None
   Diff in tools/kapi/src/extractor/vmlinux/mod.rs:22:
    fn opt_string(s: String) -> Option<String> {
   -    if s.is_empty() { None } else { Some(s) }
   +    if s.is_empty() {
   +        None
   +    } else {
   +        Some(s)
   +    }
    }
    
    pub struct VmlinuxExtractor {
   Diff in tools/kapi/src/extractor/vmlinux/mod.rs:124:
                    let magic_offset = offset + param_magic_offset;
                    if magic_offset + 4 <= data.len() {
                        let magic_bytes = &data[magic_offset..magic_offset + 4];
   -                    let magic_value = u32::from_le_bytes([magic_bytes[0], magic_bytes[1], magic_bytes[2], magic_bytes[3]]);
   +                    let magic_value = u32::from_le_bytes([
   +                        magic_bytes[0],
   +                        magic_bytes[1],
   +                        magic_bytes[2],
   +                        magic_bytes[3],
   +                    ]);
    
                        if magic_value == magic_finder::MAGIC_PARAM {
                            // Avoid duplicate detection of the same spec
   Diff in tools/kapi/src/extractor/vmlinux/mod.rs:131:
   -                        if last_found_offset.is_none() || offset >= last_found_offset.unwrap() + param_magic_offset {
   +                        if last_found_offset.is_none()
   +                            || offset >= last_found_offset.unwrap() + param_magic_offset
   +                        {
                                let api_type = if name.starts_with("sys_") {
                                    "syscall"
                                } else if name.ends_with("_ioctl") {
   Diff in tools/kapi/src/extractor/vmlinux/mod.rs:160:
        Ok(specs)
    }
    
   -
   -
   -
    fn is_valid_api_name(name: &str) -> bool {
        // Validate API name format and length
        if name.is_empty() || name.len() < 3 || name.len() > 100 {
   Diff in tools/kapi/src/extractor/vmlinux/mod.rs:181:
        }
    
        // Match common kernel API patterns
   -    name.starts_with("sys_") ||
   -    name.starts_with("__") ||
   -    name.ends_with("_ioctl") ||
   -    name.contains("_") ||
   -    name.len() > 6
   +    name.starts_with("sys_")
   +        || name.starts_with("__")
   +        || name.ends_with("_ioctl")
   +        || name.contains("_")
   +        || name.len() > 6
    }
    
    impl ApiExtractor for VmlinuxExtractor {
   Diff in tools/kapi/src/extractor/vmlinux/mod.rs:195:
                .iter()
                .map(|spec| {
                    // Parse the full spec for listing
   -                parse_binary_to_api_spec(&self.kapi_data, spec.offset)
   -                    .unwrap_or_else(|_| ApiSpec {
   -                        name: spec.name.clone(),
   -                        api_type: spec.api_type.clone(),
   -                        description: None,
   -                        long_description: None,
   -                        version: None,
   -                        context_flags: vec![],
   -                        param_count: None,
   -                        error_count: None,
   -                        examples: None,
   -                        notes: None,
   -                        since_version: None,
   -                        subsystem: None,
--
            }
   Diff in tools/kapi/src/extractor/vmlinux/mod.rs:337:
            &mut reader,
            magic_offsets.param_offset,
            sizes::MAX_PARAMS as u32,
   -        |r| parse_param(r, 0),  // Index doesn't seem to be used in parse_param
   +        |r| parse_param(r, 0), // Index doesn't seem to be used in parse_param
        );
    
        // Read return_spec
   Diff in tools/kapi/src/extractor/vmlinux/mod.rs:370:
        // Read examples and notes - position reader at info section if magic found
        let (examples, notes) = if let Some(info_offset) = magic_offsets.info_offset {
            reader.pos = info_offset + 4; // +4 to skip magic
   -        let examples = reader.read_cstring(sizes::DESC * 2).filter(|s| !s.is_empty());
   -        let notes = reader.read_cstring(sizes::DESC * 2).filter(|s| !s.is_empty());
   +        let examples = reader
   +            .read_cstring(sizes::DESC * 2)
   +            .filter(|s| !s.is_empty());
   +        let notes = reader
   +            .read_cstring(sizes::DESC * 2)
   +            .filter(|s| !s.is_empty());
            (examples, notes)
        } else {
   -        let examples = reader.read_cstring(sizes::DESC * 2).filter(|s| !s.is_empty());
   -        let notes = reader.read_cstring(sizes::DESC * 2).filter(|s| !s.is_empty());
   +        let examples = reader
   +            .read_cstring(sizes::DESC * 2)
   +            .filter(|s| !s.is_empty());
   +        let notes = reader
   +            .read_cstring(sizes::DESC * 2)
   +            .filter(|s| !s.is_empty());
            (examples, notes)
        };
    
   Diff in tools/kapi/src/extractor/vmlinux/mod.rs:460:
            addr_family_spec_layout_size() * sizes::MAX_ADDR_FAMILIES +
            4 + // addr_family_count
            6 + 2 + // 6 bool flags + padding
   -        sizes::DESC * 3 // 3 semantic descriptions
   +        sizes::DESC * 3, // 3 semantic descriptions
        );
    
        Ok(ApiSpec {
   Diff in tools/kapi/src/extractor/vmlinux/mod.rs:470:
            long_description,
            version,
            context_flags,
   -        param_count: if parameters.is_empty() { None } else { Some(parameters.len() as u32) },
   -        error_count: if errors.is_empty() { None } else { Some(errors.len() as u32) },
   +        param_count: if parameters.is_empty() {
   +            None
   +        } else {
   +            Some(parameters.len() as u32)
   +        },
   +        error_count: if errors.is_empty() {
   +            None
   +        } else {
   +            Some(errors.len() as u32)
   +        },
            examples,
            notes,
            since_version,
   Diff in tools/kapi/src/extractor/vmlinux/mod.rs:603:
        // Skip error_values pointer (8 bytes)
        reader.skip(8);
        let _error_count = reader.read_u32().unwrap_or(0); // Don't fail on return spec
   -    // Skip is_success function pointer (8 bytes)
   +                                                       // Skip is_success function pointer (8 bytes)
        reader.skip(8);
    
        let description = reader.read_string_or_default(sizes::DESC);
   Diff in tools/kapi/src/extractor/vmlinux/mod.rs:684:
        let _transform_to = reader.read_i32()?; // transform_to
        let timing_bytes = reader.read_bytes(32)?; // timing[32]
        let timing = if let Some(end) = timing_bytes.iter().position(|&b| b == 0) {
   -        String::from_utf8_lossy(&timing_bytes[..end]).parse().unwrap_or(0)
   +        String::from_utf8_lossy(&timing_bytes[..end])
   +            .parse()
   +            .unwrap_or(0)
        } else {
            0
        };
   Diff in tools/kapi/src/extractor/vmlinux/mod.rs:727:
    
        let _signal_count = reader.read_u32()?;
    
   -    Some(SignalMaskSpec {
   -        name,
   -        description,
   -    })
   +    Some(SignalMaskSpec { name, description })
    }
    
    fn parse_struct_field(reader: &mut DataReader) -> Option<StructFieldSpec> {
   Diff in tools/kapi/src/extractor/vmlinux/mod.rs:862:
            alternatives,
        })
    }
   +
>> Diff in tools/kapi/src/extractor/vmlinux/magic_finder.rs:1:
    // Magic markers for each section
   -pub const MAGIC_PARAM: u32 = 0x4B415031;    // 'KAP1'
   -pub const MAGIC_RETURN: u32 = 0x4B415232;   // 'KAR2'
   -pub const MAGIC_ERROR: u32 = 0x4B414533;    // 'KAE3'
   -pub const MAGIC_LOCK: u32 = 0x4B414C34;     // 'KAL4'
   +pub const MAGIC_PARAM: u32 = 0x4B415031; // 'KAP1'
   +pub const MAGIC_RETURN: u32 = 0x4B415232; // 'KAR2'
   +pub const MAGIC_ERROR: u32 = 0x4B414533; // 'KAE3'
   +pub const MAGIC_LOCK: u32 = 0x4B414C34; // 'KAL4'
    pub const MAGIC_CONSTRAINT: u32 = 0x4B414335; // 'KAC5'
   -pub const MAGIC_INFO: u32 = 0x4B414936;     // 'KAI6'
   -pub const MAGIC_SIGNAL: u32 = 0x4B415337;   // 'KAS7'
   -pub const MAGIC_SIGMASK: u32 = 0x4B414D38;  // 'KAM8'
   -pub const MAGIC_STRUCT: u32 = 0x4B415439;   // 'KAT9'
   -pub const MAGIC_EFFECT: u32 = 0x4B414641;   // 'KAFA'
   -pub const MAGIC_TRANS: u32 = 0x4B415442;    // 'KATB'
   -pub const MAGIC_CAP: u32 = 0x4B414343;      // 'KACC'
   +pub const MAGIC_INFO: u32 = 0x4B414936; // 'KAI6'
   +pub const MAGIC_SIGNAL: u32 = 0x4B415337; // 'KAS7'
   +pub const MAGIC_SIGMASK: u32 = 0x4B414D38; // 'KAM8'
   +pub const MAGIC_STRUCT: u32 = 0x4B415439; // 'KAT9'
   +pub const MAGIC_EFFECT: u32 = 0x4B414641; // 'KAFA'
   +pub const MAGIC_TRANS: u32 = 0x4B415442; // 'KATB'
   +pub const MAGIC_CAP: u32 = 0x4B414343; // 'KACC'
    
    pub struct MagicOffsets {
        pub param_offset: Option<usize>,
   Diff in tools/kapi/src/extractor/vmlinux/magic_finder.rs:57:
                match value {
                    MAGIC_PARAM if offsets.param_offset.is_none() => {
                        offsets.param_offset = Some(base_offset + i);
   -                },
   +                }
                    MAGIC_RETURN if offsets.return_offset.is_none() => {
                        offsets.return_offset = Some(base_offset + i);
   -                },
   +                }
                    MAGIC_ERROR if offsets.error_offset.is_none() => {
                        offsets.error_offset = Some(base_offset + i);
   -                },
   +                }
                    MAGIC_LOCK if offsets.lock_offset.is_none() => {
                        offsets.lock_offset = Some(base_offset + i);
   -                },
   +                }
                    MAGIC_CONSTRAINT if offsets.constraint_offset.is_none() => {
                        offsets.constraint_offset = Some(base_offset + i);
   -                },
   +                }
                    MAGIC_INFO if offsets.info_offset.is_none() => {
                        offsets.info_offset = Some(base_offset + i);
   -                },
   +                }
                    MAGIC_SIGNAL if offsets.signal_offset.is_none() => {
                        offsets.signal_offset = Some(base_offset + i);
   -                },
   +                }
                    MAGIC_SIGMASK if offsets.sigmask_offset.is_none() => {
                        offsets.sigmask_offset = Some(base_offset + i);
   -                },
   +                }
                    MAGIC_STRUCT if offsets.struct_offset.is_none() => {
                        offsets.struct_offset = Some(base_offset + i);
   -                },
   +                }
                    MAGIC_EFFECT if offsets.effect_offset.is_none() => {
                        offsets.effect_offset = Some(base_offset + i);
   -                },
   +                }
                    MAGIC_TRANS if offsets.trans_offset.is_none() => {
                        offsets.trans_offset = Some(base_offset + i);
   -                },
   +                }
                    MAGIC_CAP if offsets.cap_offset.is_none() => {
                        offsets.cap_offset = Some(base_offset + i);
   -                },
   +                }
                    _ => {}
                }
    
   Diff in tools/kapi/src/extractor/vmlinux/magic_finder.rs:100:
            offsets
        }
    }
   +
>> Diff in tools/kapi/src/extractor/debugfs.rs:1:
    use crate::formatter::OutputFormatter;
   -use anyhow::{Context, Result, bail};
   +use anyhow::{bail, Context, Result};
    use serde::Deserialize;
    use std::fs;
    use std::io::Write;
   Diff in tools/kapi/src/extractor/debugfs.rs:6:
    use std::path::PathBuf;
    
   -use super::{ApiExtractor, ApiSpec, CapabilitySpec, display_api_spec};
   +use super::{display_api_spec, ApiExtractor, ApiSpec, CapabilitySpec};
    
    #[derive(Deserialize)]
    struct KernelApiJson {
>> Diff in tools/kapi/src/extractor/kerneldoc_parser.rs:1:
    use super::{
   -    ApiSpec, CapabilitySpec, ConstraintSpec, ErrorSpec, LockSpec, ParamSpec,
   -    ReturnSpec, SideEffectSpec, SignalSpec, StateTransitionSpec, StructSpec,
   -    StructFieldSpec,
   +    ApiSpec, CapabilitySpec, ConstraintSpec, ErrorSpec, LockSpec, ParamSpec, ReturnSpec,
   +    SideEffectSpec, SignalSpec, StateTransitionSpec, StructFieldSpec, StructSpec,
    };
    use anyhow::Result;
    use std::collections::HashMap;
   Diff in tools/kapi/src/extractor/kerneldoc_parser.rs:89:
                        let desc = desc.trim();
                        if !param_name.contains('-') {
                            // This is a basic parameter description - add to map
   -                        param_map.insert(param_name.to_string(), ParamSpec {
   -                            index: param_map.len() as u32,
   -                            name: param_name.to_string(),
   -                            type_name: String::new(),
   -                            description: desc.to_string(),
   -                            flags: 0,
   -                            param_type: 0,
   -                            constraint_type: 0,
   -                            constraint: None,
   -                            min_value: None,
   -                            max_value: None,
   -                            valid_mask: None,
   -                            enum_values: vec![],
   -                            size: None,
   -                            alignment: None,
   -                        });
   +                        param_map.insert(
   +                            param_name.to_string(),
   +                            ParamSpec {
   +                                index: param_map.len() as u32,
   +                                name: param_name.to_string(),
   +                                type_name: String::new(),
   +                                description: desc.to_string(),
   +                                flags: 0,
   +                                param_type: 0,
   +                                constraint_type: 0,
   +                                constraint: None,
   +                                min_value: None,
   +                                max_value: None,
   +                                valid_mask: None,
   +                                enum_values: vec![],
   +                                size: None,
   +                                alignment: None,
   +                            },
   +                        );
                        }
                    }
                }
   Diff in tools/kapi/src/extractor/kerneldoc_parser.rs:240:
                            _ => super::KAPI_LOCK_INTERNAL,
                        };
                    }
   -            }
   -            else if let Some(rest) = line.strip_prefix("lock-desc:") {
   +            } else if let Some(rest) = line.strip_prefix("lock-desc:") {
                    if let Some(lock) = current_lock.as_mut() {
                        lock.description = self.collect_multiline_value(&lines, i, rest);
                    }
   Diff in tools/kapi/src/extractor/kerneldoc_parser.rs:280:
                    if let Some(signal) = current_signal.as_mut() {
                        signal.direction = self.parse_signal_direction(rest.trim());
                    }
   -            }
   -            else if let Some(rest) = line.strip_prefix("signal-action:") {
   +            } else if let Some(rest) = line.strip_prefix("signal-action:") {
                    if let Some(signal) = current_signal.as_mut() {
                        signal.action = self.parse_signal_action(rest.trim());
                    }
   Diff in tools/kapi/src/extractor/kerneldoc_parser.rs:288:
   -            }
   -            else if let Some(rest) = line.strip_prefix("signal-condition:") {
   +            } else if let Some(rest) = line.strip_prefix("signal-condition:") {
                    if let Some(signal) = current_signal.as_mut() {
                        signal.condition = Some(self.collect_multiline_value(&lines, i, rest));
                    }
   Diff in tools/kapi/src/extractor/kerneldoc_parser.rs:293:
   -            }
   -            else if let Some(rest) = line.strip_prefix("signal-desc:") {
   +            } else if let Some(rest) = line.strip_prefix("signal-desc:") {
                    if let Some(signal) = current_signal.as_mut() {
                        signal.description = Some(self.collect_multiline_value(&lines, i, rest));
                    }
   Diff in tools/kapi/src/extractor/kerneldoc_parser.rs:298:
   -            }
   -            else if let Some(rest) = line.strip_prefix("signal-timing:") {
   +            } else if let Some(rest) = line.strip_prefix("signal-timing:") {
                    if let Some(signal) = current_signal.as_mut() {
                        signal.timing = self.parse_signal_timing(rest.trim());
                    }
   Diff in tools/kapi/src/extractor/kerneldoc_parser.rs:303:
   -            }
   -            else if let Some(rest) = line.strip_prefix("signal-priority:") {
   +            } else if let Some(rest) = line.strip_prefix("signal-priority:") {
                    if let Some(signal) = current_signal.as_mut() {
                        signal.priority = rest.trim().parse().unwrap_or(0);
                    }
   Diff in tools/kapi/src/extractor/kerneldoc_parser.rs:308:
..

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2025-12-21  3:57 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-12-21  3:57 [sashal:spec 4/131] Diff in tools/kapi/src/extractor/vmlinux/binary_utils.rs:48: kernel test robot

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.