From mboxrd@z Thu Jan 1 00:00:00 1970 From: Claude Code Review Bot To: dri-devel-reviews@example.com Subject: Claude review: fbdev: defio: Move pageref array to struct fb_deferred_io_state Date: Fri, 27 Feb 2026 15:29:26 +1000 Message-ID: In-Reply-To: <20260224082657.207284-5-tzimmermann@suse.de> References: <20260224082657.207284-1-tzimmermann@suse.de> <20260224082657.207284-5-tzimmermann@suse.de> X-Mailer: Claude Code Patch Reviewer Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Patch Review Moves `npagerefs` and `pagerefs` from `struct fb_info` to `struct fb_deferr= ed_io_state`, further reducing driver-visible state. `fb_deferred_io_state_alloc` now takes a `len` parameter: ```c static struct fb_deferred_io_state *fb_deferred_io_state_alloc(unsigned lon= g len) { struct fb_deferred_io_state *fbdefio_state; struct fb_deferred_io_pageref *pagerefs; unsigned long npagerefs; fbdefio_state =3D kzalloc_obj(*fbdefio_state); if (!fbdefio_state) return NULL; npagerefs =3D DIV_ROUND_UP(len, PAGE_SIZE); pagerefs =3D kvzalloc_objs(*pagerefs, npagerefs); if (!pagerefs) goto err_kfree; fbdefio_state->npagerefs =3D npagerefs; fbdefio_state->pagerefs =3D pagerefs; kref_init(&fbdefio_state->ref); mutex_init(&fbdefio_state->lock); INIT_LIST_HEAD(&fbdefio_state->pagereflist); return fbdefio_state; err_kfree: kfree(fbdefio_state); return NULL; } ``` The error path is correct: `kref_init` and `mutex_init` haven't been called= yet at the `err_kfree` label, so a plain `kfree` is sufficient. The `kvfre= e(fbdefio_state->pagerefs)` is properly placed in `fb_deferred_io_state_rel= ease`. The change to `fb_deferred_io_pageref_lookup` signature: ```c static struct fb_deferred_io_pageref * fb_deferred_io_pageref_lookup(struct fb_deferred_io_state *fbdefio_state, unsigned long offset, struct page *page) { struct fb_info *info =3D fbdefio_state->info; ``` This is safe because all callers hold `fbdefio_state->lock` and have verifi= ed `info !=3D NULL`. The simplification of `fb_deferred_io_init` is a nice cleanup =E2=80=94 the= separate `err:` label and `ret` variable are no longer needed since the al= location is fully encapsulated in `fb_deferred_io_state_alloc`. No issues with this patch. --- Generated by Claude Code Patch Reviewer