커널
Posts
228 posts[Linux-Kernel] LKML: qla2xxx: fix a potential NULL pointer dereference
출처https://patchwork.kernel.org/patch/11150763/https://lkml.org/lkml/2019/9/18/796 //// 흥미로운 패치다.// diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.cindex 98e60a3..31714c9 100644--- a/drivers/scsi/qla2xxx/qla_os.c+++ b/drivers/scsi/qla2xxx/qla_os.c@@ -3232,6 +3232,10 @@ static void qla2x00_iocb_work_fn(struct work_struct *work) req->req_q_in, req->req_q_out, r
[리눅스커널] 워크큐: 워커 스레드 핸들 worker_thread() 함수 분석하기 (1/2)
커널 스레드를 처음 분석하려고 할 때 다음과 같은 의문이 생길 때가 있습니다. 새로운 커널 스레드 코드 분석을 시작할 때 어느 코드부터 분석해야 할까? 먼저 커널 스레드 핸들 함수를 열어봐야 합니다. 그 이유는 커널 스레드 세부 동작은 커널 스레드 핸들 함수에 구현됐기 때문입니다. 마찬가지로 워커 스레드 세부 동작을 알려면 먼저 스레드 핸들 함수인 worker_thread() 함수를 봐야 합니다. 이번 시간에는 worker_thread() 함수를 분석하면서 세부 동작 원리를 배워보겠습니다. 먼저 worker_thread() 함수의 주요 동작은 다음과 같습니다. 워크 실행필요 시 워커 스레드 생성 요청워커 스레드 종료 위 항목 중 핵심 동작은 워크를 실행하는 것이며 나머지는 워커를
[리눅스커널] 워크큐: 워커 스레드를 생성하는 create_worker() 함수 분석하기
워커 스레드를 생성하려면 create_worker() 함수를 호출해야 합니다. 이번 시간에는 create_worker() 함수 코드를 분석하면서 워커 스레드를 생성하는 과정을 배워보겠습니다. 먼저 create_worker() 함수가 하는 주요 동작은 다음과 같습니다. 워커풀 아이디 읽어오기 워커 스레드 이름을 지정해 워커 스레드 생성 요청하기 워커풀에 워커 스레드 등록하기 워커 정보를 갱신하고 만든 워커 스레드를 깨우기 각 단계 별 코드를 자세히 살펴보겠습니다. 다음은 create_worker() 함수 구현부입니다.1 static struct worker *create_worker(struct worker_pool *pool)2 {3 struct worker *worker = NULL;4 int
[리눅스커널] 워크큐: 워커 스레드는 누가 언제 만들까
이번 챕터 앞 부분에서 워크큐에 대해 다음과 같이 소개했습니다. 워크를 처리하는 워커 스레드를 미리 생성해 놓고 워크 실행 요청이 오면 해당 워커 스레드가 이를 처리한다. 이번 시간에는 워커 스레드의 핸들인 워커를 언제 생성하는지 알아보겠습니다. 그렇다면 워커는 어느 함수를 실행할 때 생성할까요? 워커는 create_worker() 함수를 호출할 때 생성합니다. 워커를 생성하는 create_worker() 함수를 분석하기 전 이 함수를 호출하는 경로를 알아보겠습니다. maybe_create_worker() get_unbound_pool() workqueue_prepare_cpu() 커널 내부에서 워크를 사용해 후반부 처리를 하므로 커널은 워커 스레드를 미리


