From mboxrd@z Thu Jan 1 00:00:00 1970 From: greg@kroah.com (Greg KH) Date: Thu, 6 Apr 2017 08:08:20 +0200 Subject: generic memory addresses In-Reply-To: <20170406003101.GH18834@eros> References: <20170406003101.GH18834@eros> Message-ID: <20170406060820.GA9759@kroah.com> To: kernelnewbies@lists.kernelnewbies.org List-Id: kernelnewbies.lists.kernelnewbies.org On Thu, Apr 06, 2017 at 10:31:01AM +1000, Tobin C. Harding wrote: > Why is there code in-tree that declares generic memory addresses as > unsigned int? > > Linux Device Drivers 3rd Edition page 289 > Therefore, generic memory addresses in the kernel are usually unsigned > long, exploiting the fact that pointers and long integers are always > the same size, at least on all the platforms currently supported by > Linux. > > It would therefore seem like a bug to declare a generic memory address > as an unsigned int in code that can run on 64 bit machines. I agree, that does seem like a bug. > What is the explanation for such declarations in the kernel please? > > $ cd KERNEL_TREE > $ git grep 'unsigned int addr' | wc -l > 556 Make sure those really are being used to store a real address, sometimes they are not... thanks, greg k-h