Errata


Print Print Icon

Submit your own errata for this product.


The errata list is a list of errors and their corrections that were found after the product was released.

The following errata were submitted by our customers and have not yet been approved or disproved by the author or editor. They solely represent the opinion of the customer.


Color Key: Serious Technical Mistake Minor Technical Mistake Language or formatting error Typo Question



Version Location Description Submitted By
Printed Page 58
3rd paragraph

"see Table 2-2" should be "see Table 2-4".

Sam Sandbote 
Printed Page 106
3rd paragraph 6th line

stack of A should be stack of C
before process swithing, A has not resumed its execution and its kernel stack has not been loaded. So I think prev variable should be on kernel stack of C, not of A. C is the currently running process and its kernel stack is in use.

Anonymous 
Printed Page 118
7th paragraph(step c in step 5)

I've checked the source code of wake_up_new_task function.
It gose like
void fastcall wake_up_new_task(task_t * p, unsigned long clone_flags)
{
...
rq = task_rq_lock(p, &flags);
cpu = task_cpu(p);
this_cpu = smp_processor_id();
...
if(likely(cpu == this_cpu)) {
if(!clone_flags & CLONE_VM)) {
...
list_add_tail(&p->run_list, &current->run_list);
...
} else
__activate_task(p, rq); /* add to the end*/
} else {
...
__activate_task(p, rq);/* rq is child's runqueue*/
}
}
Orinally, in the boot, it said that "Otherwise, if the child will not be run on the same CPU as the parent, or parent and child share the same set of page tables, it inserts the child in the last position of the parent's runqueue".
I think it's not 100 percent corrent. Because, as the souce code just listed implies, when the child and parent will not run on the same CPU, the child will not be added to the parent's runqueue and will be added to the child's runqueue.(different cpu different runqueue). Another point the souce code reveals is that when the child and parent will run on the same cpu and they share page tables, the child will be added to the last position of the parent's runqueue.

Anonymous 
Other Digital Version 123
9.3.3.2

In section 9.3.3.2
if (vma && end_addr <= vma->vm_start)
should be
if (vma && end_addr <= vma->vm_end)

Please ignore the page number, because I cannot find it from the digital version.

Anonymous 
Printed Page 173
3rd paragraph, below table 4-9

A typo: softirq is spelled sofirq
"The index of a sofirq"

Anonymous 
Printed Page 179
5th paragraph

the following bullet item:

1. Checks the TASKLET_STATE_SCHED flag; if it is set, returns (the taslet has already been scheduled).

It should be something like:

1. Checks the TASKLET_STATE_SCHED flag; if it is set, returns (the taslet has already been scheduled); otherwise set TASKLET_STATE_SCHED bit and continue to step 2.

According to the code, test_and_set_bit() is used. Therefore, here TASKLET_STATE_SCHED bit will be set if not. IMO this is important because the section explained where TASKLET_STATE_SCHED is cleared, but not where it is set, which is confusing to me before I checked the source code.

Anonymous 
Printed Page 191
sentence prior to Table 5-1

"prempt_count" should be "preempt_count"

David Sanderson 
Safari Books Online 289
2nd paragraph (step 7)

If the move_task() function failed
should be
If the move_tasks() function failed

Namhyung Kim 
Safari Books Online 312
last paragraph

When kernel finds 256 page frames in the 1024-page-frame list, the "last" 512 of the remaining 768 page frames are inserted into the free list.

Namhyung Kim 
Safari Books Online 321
last paragraph (step 4)

"PF_MEMDIE" should be "TIF_MEMDIE"

Namhyung Kim 
Safari Books Online 327
middle of page (description of "External slap descriptor")

"cache_sizes" should be "malloc_sizes"

Namhyung Kim 
Safari Books Online 327
3rd from the last paragraph

"512MB" should be "512 (byte)"

Anonymous 
Safari Books Online 331
1st item under the "Releasing a Slab from a Cache"

'(see the later section "Releasing a Slab from a Cache")' should be removed or refer other section

Namhyung Kim 
Printed Page 335
Figure 8-6

(335): comment in figure 8-6 "num+osize" should be "num*osize".

Anonymous 
Safari Books Online 345
middle of the vmalloc() code

"if (!area_pages)" should be "if (!area->pages)"

Namhyung Kim 
Printed Page 661
Between pages 661 and 662 of the Third Edition

The section "Creating a Memory Mapping" appears to have suffered an editing or printing error resulting in the omission of steps 4 through 9 from the list given. I surmise that this is not a simple numbering error since the amount of kernel code involved in steps 4-9 is about 75 lines.

The error is present both in my printed copy as well as in the Safari version.

Anonymous 
Printed Page 661
Between pages 661 and 662 of the Third Edition

The section "Creating a Memory Mapping" appears to have suffered an editing or printing error resulting in the omission of steps 4 through 9 from the list given. I surmise that this is not a simple numbering error since the amount of kernel code involved in steps 4-9 is about 75 lines.

The error is present both in my printed copy as well as in the Safari version.

Anonymous 
Printed Page 661
End of page

Steps 4-9 on "Creating a Memory Mapping" are missing.

Peter Nordstrom 
Safari Books Online 732
last paragraph (step 2)

"__add_to_page_cache" should be "__add_to_swap_cache"

Namhyung Kim 
Safari Books Online 733
3rd paragraph

"swapper_state" should be "swapper_space"

Namhyung Kim 
Printed Page 799
6th

The last sentence of the paragraph reads "As usual, however, the system administrator can tune these values by writing into the /proc/sys/kernel/msgmni, /proc/sys/kernel/msgmnb, and /proc/sys/kernel/msgmax files, respectively."

The last two files refered to need to be swapped. The sentence should read "As usual, however, the system administrator can tune these values by writing into the /proc/sys/kernel/msgmni, /proc/sys/kernel/msgmax, and /proc/sys/kernel/msgmnb files, respectively."

Ray Michaels 
Other Digital Version 914
Title

The ePub version of the third edition has chapter 20 as
"Program ExZecution"
instead of
"Program Execution" (from the PDF)

It appears twice: in the TOC and the title of chapter 20.

ePub doesn't track page numbers correctly, so please ignore the number written above.

salty-horse