On Mon, Jan 09, 2023 at 06:06:37PM +0100, Fabio M. De Francesco wrote: > > -struct sysv_dir_entry * sysv_dotdot (struct inode *dir, struct page **p) > +struct sysv_dir_entry *sysv_dotdot(struct inode *dir, struct page **p) > { > - struct page *page = dir_get_page(dir, 0); > - struct sysv_dir_entry *de = NULL; > + struct page *page = NULL; > + struct sysv_dir_entry *de = dir_get_page(dir, 0, &page); > > - if (!IS_ERR(page)) { > - de = (struct sysv_dir_entry*) page_address(page) + 1; > + if (!IS_ERR(de)) { > *p = page; > + return (struct sysv_dir_entry *)page_address(page) + 1; > } > - return de; > + return NULL; > } Would be better off with struct sysv_dir_entry *de = dir_get_page(dir, 0, p); if (!IS_ERR(de)) return de + 1; // ".." is the second directory entry return NULL; IMO...