From: Jeff Garzik <jgarzik@pobox.com>
To: Linux Kernel <linux-kernel@vger.kernel.org>,
Marcelo Tosatti <marcelo.tosatti@cyclades.com>
Cc: Bartlomiej Zolnierkiewicz <B.Zolnierkiewicz@elka.pw.edu.pl>,
Douglas Gilbert <dougg@torque.net>, Jens Axboe <axboe@suse.de>,
William Lee Irwin III <wli@holomorphy.com>
Subject: [PATCH 2.4] the perils of kunmap_atomic
Date: Tue, 26 Oct 2004 19:31:24 -0400 [thread overview]
Message-ID: <417EDE4C.20003@pobox.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 614 bytes --]
kunmap_atomic() violates the Principle of Least Surprise in a nasty way.
kmap(), kunmap(), and kmap_atomic() all take struct page* to
reference the memory location. kunmap_atomic() is the oddball of the
three, and takes a kernel address.
Ignoring the driver-related bugs that are present due to
kunmap_atomic()'s weirdness, there also appears to be a big in the
!CONFIG_HIGHMEM implementation in 2.4.x.
(Bart is poking through some of the 2.6.x-related kunmap_atomic slip-ups)
Anyway, what do people think about the attached patch to 2.4.x? I'm
surprised it has gone unnoticed until now.
Jeff
[-- Attachment #2: patch --]
[-- Type: text/plain, Size: 465 bytes --]
===== include/linux/highmem.h 1.12 vs edited =====
--- 1.12/include/linux/highmem.h 2003-06-30 20:18:42 -04:00
+++ edited/include/linux/highmem.h 2004-10-26 19:26:14 -04:00
@@ -70,7 +70,7 @@
#define kunmap(page) do { } while (0)
#define kmap_atomic(page,idx) kmap(page)
-#define kunmap_atomic(page,idx) kunmap(page)
+#define kunmap_atomic(addr,idx) kunmap(virt_to_page(addr))
#define bh_kmap(bh) ((bh)->b_data)
#define bh_kunmap(bh) do { } while (0)
next reply other threads:[~2004-10-26 23:31 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-10-26 23:31 Jeff Garzik [this message]
2004-10-26 23:36 ` [PATCH 2.4] the perils of kunmap_atomic Nigel Cunningham
2004-10-28 4:20 ` Jeff Garzik
2004-10-26 23:42 ` Nigel Cunningham
2004-10-27 0:07 ` William Lee Irwin III
2004-10-27 16:19 ` Marcelo Tosatti
2004-10-28 4:18 ` Jeff Garzik
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=417EDE4C.20003@pobox.com \
--to=jgarzik@pobox.com \
--cc=B.Zolnierkiewicz@elka.pw.edu.pl \
--cc=axboe@suse.de \
--cc=dougg@torque.net \
--cc=linux-kernel@vger.kernel.org \
--cc=marcelo.tosatti@cyclades.com \
--cc=wli@holomorphy.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.