기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

커널 디바이스 드라이버 작업 도중에 커널패닉을 만났습니다.

Unable to handle kernel NULL pointer dereference at virtual address 00000098
...

원인이 되는 지점을 찾았는데, 어찌된 상황인지 이해가 안가고 있습니다..;;


실제 커널패닉을 일으키는 지점은 다음과 같습니다.


static void transmit_chars(struct uart_omap_port *up)
{
struct circ_buf *xmit = &up->port.state->xmit;
int count;

if (up->port.irq == 73) {
printk(KERN_DEBUG "\n %d : %s / %s", __LINE__, __FUNCTION__, __FILE__);
printk(KERN_DEBUG "\n &(up->port.x_char) = 0x%08x", &(up->port.x_char));
}

if (up->port.x_char) { // <- 여기서 커널패닉이 남
serial_out(up, UART_TX, up->port.x_char);
up->port.icount.tx++;
up->port.x_char = 0;
return;
}

if (up->port.x_char) 구문을 만나는 순간 커널패닉이 납니다.

희한한 것은 up->port.x_char의 주소는 null이 아니라는 겁니다.

제가 뭔가 잘 못 이해하고 있는걸까요?

갑자기 뭔가 미궁에 빠진 기분입니다...;;
List of Articles
번호 제목 글쓴이 날짜 조회 수

사용자 로그인