blkmap: Handle read-only slices in write path
Some blkmap slices (like blkmap_crypt) don't support writes and have their write function set to NULL. The blkmap_blk_write_slice() function calls the write function without checking if it's NULL, causing a crash when attempting to write to such slices. Add a NULL check before calling the write function. When the slice doesn't support writes, return 0 to indicate no blocks were written. Co-developed-by: Claude <noreply@anthropic.com> Signed-off-by: Simon Glass <simon.glass@canonical.com>
This commit is contained in:
@@ -281,6 +281,9 @@ static ulong blkmap_blk_write_slice(struct blkmap *bm, struct blkmap_slice *bms,
|
|||||||
{
|
{
|
||||||
lbaint_t nr, cnt;
|
lbaint_t nr, cnt;
|
||||||
|
|
||||||
|
if (!bms->write)
|
||||||
|
return 0;
|
||||||
|
|
||||||
nr = blknr - bms->blknr;
|
nr = blknr - bms->blknr;
|
||||||
cnt = (blkcnt < bms->blkcnt) ? blkcnt : bms->blkcnt;
|
cnt = (blkcnt < bms->blkcnt) ? blkcnt : bms->blkcnt;
|
||||||
return bms->write(bm, bms, nr, cnt, buffer);
|
return bms->write(bm, bms, nr, cnt, buffer);
|
||||||
|
|||||||
Reference in New Issue
Block a user