|
@@ -214,7 +214,7 @@ efi_capsule_update_locked(efi_capsule_header_t *capsule,
|
|
|
*
|
|
|
* Return 0 on success, a converted EFI status code on failure.
|
|
|
*/
|
|
|
-int efi_capsule_update(efi_capsule_header_t *capsule, struct page **pages)
|
|
|
+int efi_capsule_update(efi_capsule_header_t *capsule, phys_addr_t *pages)
|
|
|
{
|
|
|
u32 imagesize = capsule->imagesize;
|
|
|
efi_guid_t guid = capsule->guid;
|
|
@@ -249,10 +249,11 @@ int efi_capsule_update(efi_capsule_header_t *capsule, struct page **pages)
|
|
|
sglist = kmap(sg_pages[i]);
|
|
|
|
|
|
for (j = 0; j < SGLIST_PER_PAGE && count > 0; j++) {
|
|
|
- u64 sz = min_t(u64, imagesize, PAGE_SIZE);
|
|
|
+ u64 sz = min_t(u64, imagesize,
|
|
|
+ PAGE_SIZE - (u64)*pages % PAGE_SIZE);
|
|
|
|
|
|
sglist[j].length = sz;
|
|
|
- sglist[j].data = page_to_phys(*pages++);
|
|
|
+ sglist[j].data = *pages++;
|
|
|
|
|
|
imagesize -= sz;
|
|
|
count--;
|