Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'stable/for-linus-4.1' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/ibft

Pull iBFT fix from Konrad Rzeszutek Wilk:
"One single fix from Chris to workaround UEFI platforms failing with
iSCSI IBFT"

* 'stable/for-linus-4.1' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/ibft:
iscsi_ibft: filter null v4-mapped v6 addresses

+21 -15
+21 -15
drivers/firmware/iscsi_ibft.c
··· 186 186 187 187 static struct iscsi_boot_kset *boot_kset; 188 188 189 + /* fully null address */ 189 190 static const char nulls[16]; 191 + 192 + /* IPv4-mapped IPv6 ::ffff:0.0.0.0 */ 193 + static const char mapped_nulls[16] = { 0x00, 0x00, 0x00, 0x00, 194 + 0x00, 0x00, 0x00, 0x00, 195 + 0x00, 0x00, 0xff, 0xff, 196 + 0x00, 0x00, 0x00, 0x00 }; 197 + 198 + static int address_not_null(u8 *ip) 199 + { 200 + return (memcmp(ip, nulls, 16) && memcmp(ip, mapped_nulls, 16)); 201 + } 190 202 191 203 /* 192 204 * Helper functions to parse data properly. ··· 457 445 rc = S_IRUGO; 458 446 break; 459 447 case ISCSI_BOOT_ETH_IP_ADDR: 460 - if (memcmp(nic->ip_addr, nulls, sizeof(nic->ip_addr))) 448 + if (address_not_null(nic->ip_addr)) 461 449 rc = S_IRUGO; 462 450 break; 463 451 case ISCSI_BOOT_ETH_SUBNET_MASK: ··· 468 456 rc = S_IRUGO; 469 457 break; 470 458 case ISCSI_BOOT_ETH_GATEWAY: 471 - if (memcmp(nic->gateway, nulls, sizeof(nic->gateway))) 459 + if (address_not_null(nic->gateway)) 472 460 rc = S_IRUGO; 473 461 break; 474 462 case ISCSI_BOOT_ETH_PRIMARY_DNS: 475 - if (memcmp(nic->primary_dns, nulls, 476 - sizeof(nic->primary_dns))) 463 + if (address_not_null(nic->primary_dns)) 477 464 rc = S_IRUGO; 478 465 break; 479 466 case ISCSI_BOOT_ETH_SECONDARY_DNS: 480 - if (memcmp(nic->secondary_dns, nulls, 481 - sizeof(nic->secondary_dns))) 467 + if (address_not_null(nic->secondary_dns)) 482 468 rc = S_IRUGO; 483 469 break; 484 470 case ISCSI_BOOT_ETH_DHCP: 485 - if (memcmp(nic->dhcp, nulls, sizeof(nic->dhcp))) 471 + if (address_not_null(nic->dhcp)) 486 472 rc = S_IRUGO; 487 473 break; 488 474 case ISCSI_BOOT_ETH_VLAN: ··· 546 536 rc = S_IRUGO; 547 537 break; 548 538 case ISCSI_BOOT_INI_ISNS_SERVER: 549 - if (memcmp(init->isns_server, nulls, 550 - sizeof(init->isns_server))) 539 + if (address_not_null(init->isns_server)) 551 540 rc = S_IRUGO; 552 541 break; 553 542 case ISCSI_BOOT_INI_SLP_SERVER: 554 - if (memcmp(init->slp_server, nulls, 555 - sizeof(init->slp_server))) 543 + if (address_not_null(init->slp_server)) 556 544 rc = S_IRUGO; 557 545 break; 558 546 case ISCSI_BOOT_INI_PRI_RADIUS_SERVER: 559 - if (memcmp(init->pri_radius_server, nulls, 560 - sizeof(init->pri_radius_server))) 547 + if (address_not_null(init->pri_radius_server)) 561 548 rc = S_IRUGO; 562 549 break; 563 550 case ISCSI_BOOT_INI_SEC_RADIUS_SERVER: 564 - if (memcmp(init->sec_radius_server, nulls, 565 - sizeof(init->sec_radius_server))) 551 + if (address_not_null(init->sec_radius_server)) 566 552 rc = S_IRUGO; 567 553 break; 568 554 case ISCSI_BOOT_INI_INITIATOR_NAME: