Jezeli pod arg zapisana jest liczba calkowita mozemy z niej korzystac bezposrednio. Jezeli jest to wskaznik ponownie mamy problem z dostepem do danych zapisanych w przestrzeni adresowej uzytkownika. Aby ustrzec sie przed bezposrednim odwolaniem do strony nie znajdujacej sie w pamieci nalezy uzyc funkcji sprawdzajacej (z <asm/uacces.h>):
access_ok(int type, const void *addr, unsigned long size);
Pierwszy argument okresla akcje jaka chcemy przeprowadzic na przestrzeni adresowej uzytkownika ( VERIFY_READ | VERIFY_WRITE), addr jest adresem w pamieci uzytkownika, ktory sprawdzamy, size ilosc bajtow.
Do czytania i pisania, odpowiednio, w przestrzeni adresowej uzytkownika pojedynczych
jednostek pamieci sluzy zestaw funkcji:
put_user(datum,ptr) - zawiera access_ok
__put_user(datum,ptr)
get_user(local,ptr) - zawiera access_ok
__get_user(local,ptr)
Funkcje te moga kopiowac bajt, slowo, podwojne slowo. Odpowiednia ilosc transferowanych danych zapewnia specjalna funkcja gcc.