mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* alloc_area_pte: page already exists
@ 2001-08-09 13:32 Bjorn Wesen
  2001-08-09 16:03 ` Andrea Arcangeli
  0 siblings, 1 reply; 10+ messages in thread
From: Bjorn Wesen @ 2001-08-09 13:32 UTC (permalink / raw)
  To: linux-kernel

I'm trying to track down a problem which seems to be a race condition
somewhere, involving a driver using kiobuf's (on Linux 2.4). The driver
does the usual stuff like this

	if((ret = alloc_kiovec(1, &myreqbuf)))
		goto out;
	
	if((ret = map_user_kiobuf(READ, myreqbuf,
				  req_u,
				  sizeof(struct my_request)))) {
		free_kiovec(1, &myreqbuf);
		goto out;
	}

and it works 9999 out of 10000 times but sometimes alloc_kiovec fails
inside its child calls (vmalloc -> alloc_area_pte) with

alloc_area_pte: page already exists

that is, for some reason the master page table (init_mm's) becomes
unsynced with the vmalloc lists so vmalloc tries to insert into a position
where something already is mapped.

I was just wondering if someone here knows a typical way this
desyncing could arise (in the style of "this could be a race in the
vmalloc page table delayed PTE copying", or "you must never
call free_kiovec in an interrupt context" etc..)

I'm not saying it's a standard kernel bug, it most probably is a bug in
the driver I'm writing or in our Linux port (arch/cris) but maybe someone
has seen this before and knows what could be the cause. 

thanks,
Bjorn








^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2001-08-12 21:43 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-08-09 13:32 alloc_area_pte: page already exists Bjorn Wesen
2001-08-09 16:03 ` Andrea Arcangeli
2001-08-09 15:12   ` Bjorn Wesen
2001-08-09 16:36     ` Andrea Arcangeli
2001-08-09 15:33       ` Bjorn Wesen
2001-08-09 17:04         ` Andrea Arcangeli
2001-08-09 21:50           ` Bjorn Wesen
2001-08-12  9:44             ` Bjorn Wesen
2001-08-12 12:16           ` Bjorn Wesen
2001-08-12 21:43             ` Urban Widmark

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®