Re: [PATCH v2 2/4] fs/sysv: Change the signature of dir_get_page()

From: Al Viro
Date: Tue Jan 10 2023 - 21:35:36 EST


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...