mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* memory and current macro
@ 2001-05-03  2:20 peterius
  2001-05-03  9:21 ` Alan Cox
  0 siblings, 1 reply; 2+ messages in thread
From: peterius @ 2001-05-03  2:20 UTC (permalink / raw)
  To: linux-kernel

Hi,
	I've been trying to write a device driver and I've found two 
problems.  First, the current macro.  I wanted to get the uid of the 
calling process but "current->uid" does NOT work it returns some 
other number.  Same with "current->pid" and many others.  I figured 
these numbers weren't random and decided to print out a particular 
processes's descriptor and check out what was going on.  I found that 
"&(current->uid)" is 0x1d lower than the address that holds the user 
id.  In addition, adding 0x1d to that address added it twice???  So 
to get the uid I ended up adding half...or "&(current->uid) + 0x0f". 
Does anyone know why this is?  I have an i686 processor, IBM thinkpad 
570e laptop, Debian 2.2, kernel version 2.4.2.

	Second problem might not have anything to do with my device 
driver at all.  It seems that applications on my laptop know longer 
free memory they have allocated.  I thought it was my module.  I 
check "free" for the memory available, "insmod" my module, check 
"free" again, "rmmod" it.  Each time the amount of free memory goes 
down.  Even when I remove the module.  Then I found that all other 
processes do this also, from ftp to ls or cd.  Then I start getting 
really bad segmentation errors in almost every process I try to run. 
And at the top, they say, usually, "kernel BUG page_alloc.c line:xx". 
I'm worried I've corrupted something or I don't know.  I looked this 
up in the source but I don't know why everything is triggering it. 
Are there any known memory allocation or freeing problems with kernel 
2.4.2?

								- Peter

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

* Re: memory and current macro
  2001-05-03  2:20 memory and current macro peterius
@ 2001-05-03  9:21 ` Alan Cox
  0 siblings, 0 replies; 2+ messages in thread
From: Alan Cox @ 2001-05-03  9:21 UTC (permalink / raw)
  To: peterius; +Cc: linux-kernel

> problems.  First, the current macro.  I wanted to get the uid of the 
> calling process but "current->uid" does NOT work it returns some 
> other number.  Same with "current->pid" and many others.  I figured 
> these numbers weren't random and decided to print out a particular 
> processes's descriptor and check out what was going on.  I found that 
> "&(current->uid)" is 0x1d lower than the address that holds the user 
> id.  In addition, adding 0x1d to that address added it twice???  So 
> to get the uid I ended up adding half...or "&(current->uid) + 0x0f". 
> Does anyone know why this is?  I have an i686 processor, IBM thinkpad 

You are compiling with headers that dont match the kernel you are running
or with options not matching. You should be using module versioning if possible
btw on both the kernel and the module that would catch most such slips


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

end of thread, other threads:[~2001-05-03  9:18 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-05-03  2:20 memory and current macro peterius
2001-05-03  9:21 ` Alan Cox

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®