Ext2: Device Driver Development [part 4]Nov 23, 1999, 16:09 (0 Talkback[s])
(Other stories by Dave Jones)
[ Thanks to Rob Kennedy for this link. ]
"In the previous installments of this article, there have been some inaccuracies, workarounds, ugly hacks, and other code which should never have been written. Fortunately, some readers have pointed this out to me, so I can learn, as can you."
"The code I'll base this article on is similar in functionality to that shown in the second installment of this article. This has been done so that you can compare the differences between them, and hopefully learn what not to do."
"The first big mistake in the earlier article, was that I was dereferencing a pointer to user space from within kernel space. This is not allowed, as the kernel will not know which segment the offset refers to, and use the current one instead. It's remarkable that this code ever worked! The corrected code should use the copy_from_user() function instead of a loop dereferencing to user space. The TEST_write_proc subroutine now gets a lot shorter, as we do away with the memory copying loop. All we have to do, is null terminate the string, and then copy_from_user() it."