피드로 돌아가기
Hacker NewsHacker News
Infrastructure

6년의 작업과 360개 패치로 Linux 커널 내 strncpy API 완전 제거

Linux Eliminates the Strncpy API After Six Years of Work, 360 Patches

2026년 6월 20일1intermediate

Context

NUL termination 처리 방식의 반직관적 세만틱으로 인한 지속적인 버그 발생 사례 증가. 목적지 버퍼의 불필요한 zero-filling 작업으로 인한 런타임 성능 저하 문제 직면.

Technical Solution

  • strscpy 도입을 통한 NUL terminated 목적지의 안전한 복사 보장
  • strscpy_pad 적용으로 NUL termination과 zero-padding 동시 지원
  • strtomem_pad 활용을 통한 non-NUL terminated 고정 너비 필드 처리 분리
  • memcpy_and_pad 도입으로 명시적 padding이 필요한 bounded copy 구현
  • memcpy 사용을 통한 정해진 길이의 메모리 복사 최적화
  • 6년간 362개 commit을 통한 점진적 API 대체 및 종속성 제거

1. API 설계 시 NUL termination과 같은 경계 조건의 동작을 명확히 정의했는가

2. 성능 저하를 유발하는 불필요한 zero-filling이나 redundant operation이 존재하는가

3. 범용 API 하나에 여러 목적을 담기보다 용도별로 세분화된 인터페이스를 제공하는가

원문 읽기