Jądro Linuksa: copy_from_user - struct ze wskaźnikami
Zaimplementowałem jakiś rodzaj urządzenia znakowego i potrzebuję pomocy z funkcją copy_ from_user.
Mam strukturę:
struct my_struct{
int a;
int *b;
};
Inicjalizuję go w przestrzeni użytkownika i przekazuję wskaźnik do my_struct do mojego urządzenia char przy użyciu funkcji 'write'. W funkcji „write” urządzenia Kernel's Space znak rzucam go z char * do tego rodzaju struktury. Przydzielam trochę pamięci dla struktury używającej kmalloc i docopy_from_user
w tym.
Jest to dobre dla prostego 'int a', ale kopiuje tylko wskaźnik (adres) wartości b, a nie wartość wskazywaną przez b, więc jestem teraz w przestrzeni jądra i pracuję ze wskaźnikiem wskazującym na pamięć przestrzeni użytkownika . Czy to niepoprawne i nie powinienem mieć bezpośredniego dostępu do wskaźnika przestrzeni użytkownika i muszęcopy_from_user
każdy pojedynczy wskaźnik w mojej strukturze, a następnie skopiuj z powrotem każdy wskaźnik w funkcji „czytaj”, używająccopy_to_user
funkcjonować?