Skip to content

Commit 1714a3e

Browse files
author
Alex Shi
committed
Merge tag 'v4.4.30' into linux-linaro-lsk-v4.4
This is the 4.4.30 stable release
2 parents 25f89e2 + 887b692 commit 1714a3e

75 files changed

Lines changed: 482 additions & 306 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
VERSION = 4
22
PATCHLEVEL = 4
3-
SUBLEVEL = 28
3+
SUBLEVEL = 30
44
EXTRAVERSION =
55
NAME = Blurry Fish Butt
66

arch/arm/crypto/ghash-ce-glue.c

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,27 @@ static int ghash_async_digest(struct ahash_request *req)
226226
}
227227
}
228228

229+
static int ghash_async_import(struct ahash_request *req, const void *in)
230+
{
231+
struct ahash_request *cryptd_req = ahash_request_ctx(req);
232+
struct crypto_ahash *tfm = crypto_ahash_reqtfm(req);
233+
struct ghash_async_ctx *ctx = crypto_ahash_ctx(tfm);
234+
struct shash_desc *desc = cryptd_shash_desc(cryptd_req);
235+
236+
desc->tfm = cryptd_ahash_child(ctx->cryptd_tfm);
237+
desc->flags = req->base.flags;
238+
239+
return crypto_shash_import(desc, in);
240+
}
241+
242+
static int ghash_async_export(struct ahash_request *req, void *out)
243+
{
244+
struct ahash_request *cryptd_req = ahash_request_ctx(req);
245+
struct shash_desc *desc = cryptd_shash_desc(cryptd_req);
246+
247+
return crypto_shash_export(desc, out);
248+
}
249+
229250
static int ghash_async_setkey(struct crypto_ahash *tfm, const u8 *key,
230251
unsigned int keylen)
231252
{
@@ -274,7 +295,10 @@ static struct ahash_alg ghash_async_alg = {
274295
.final = ghash_async_final,
275296
.setkey = ghash_async_setkey,
276297
.digest = ghash_async_digest,
298+
.import = ghash_async_import,
299+
.export = ghash_async_export,
277300
.halg.digestsize = GHASH_DIGEST_SIZE,
301+
.halg.statesize = sizeof(struct ghash_desc_ctx),
278302
.halg.base = {
279303
.cra_name = "ghash",
280304
.cra_driver_name = "ghash-ce",

arch/arm/mach-pxa/pxa_cplds_irqs.c

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,38 +41,44 @@ static irqreturn_t cplds_irq_handler(int in_irq, void *d)
4141
unsigned long pending;
4242
unsigned int bit;
4343

44-
pending = readl(fpga->base + FPGA_IRQ_SET_CLR) & fpga->irq_mask;
45-
for_each_set_bit(bit, &pending, CPLDS_NB_IRQ)
46-
generic_handle_irq(irq_find_mapping(fpga->irqdomain, bit));
44+
do {
45+
pending = readl(fpga->base + FPGA_IRQ_SET_CLR) & fpga->irq_mask;
46+
for_each_set_bit(bit, &pending, CPLDS_NB_IRQ) {
47+
generic_handle_irq(irq_find_mapping(fpga->irqdomain,
48+
bit));
49+
}
50+
} while (pending);
4751

4852
return IRQ_HANDLED;
4953
}
5054

51-
static void cplds_irq_mask_ack(struct irq_data *d)
55+
static void cplds_irq_mask(struct irq_data *d)
5256
{
5357
struct cplds *fpga = irq_data_get_irq_chip_data(d);
5458
unsigned int cplds_irq = irqd_to_hwirq(d);
55-
unsigned int set, bit = BIT(cplds_irq);
59+
unsigned int bit = BIT(cplds_irq);
5660

5761
fpga->irq_mask &= ~bit;
5862
writel(fpga->irq_mask, fpga->base + FPGA_IRQ_MASK_EN);
59-
set = readl(fpga->base + FPGA_IRQ_SET_CLR);
60-
writel(set & ~bit, fpga->base + FPGA_IRQ_SET_CLR);
6163
}
6264

6365
static void cplds_irq_unmask(struct irq_data *d)
6466
{
6567
struct cplds *fpga = irq_data_get_irq_chip_data(d);
6668
unsigned int cplds_irq = irqd_to_hwirq(d);
67-
unsigned int bit = BIT(cplds_irq);
69+
unsigned int set, bit = BIT(cplds_irq);
70+
71+
set = readl(fpga->base + FPGA_IRQ_SET_CLR);
72+
writel(set & ~bit, fpga->base + FPGA_IRQ_SET_CLR);
6873

6974
fpga->irq_mask |= bit;
7075
writel(fpga->irq_mask, fpga->base + FPGA_IRQ_MASK_EN);
7176
}
7277

7378
static struct irq_chip cplds_irq_chip = {
7479
.name = "pxa_cplds",
75-
.irq_mask_ack = cplds_irq_mask_ack,
80+
.irq_ack = cplds_irq_mask,
81+
.irq_mask = cplds_irq_mask,
7682
.irq_unmask = cplds_irq_unmask,
7783
.flags = IRQCHIP_MASK_ON_SUSPEND | IRQCHIP_SKIP_SET_WAKE,
7884
};

arch/powerpc/kernel/eeh_driver.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -909,6 +909,14 @@ static void eeh_handle_special_event(void)
909909
/* Notify all devices to be down */
910910
eeh_pe_state_clear(pe, EEH_PE_PRI_BUS);
911911
bus = eeh_pe_bus_get(phb_pe);
912+
if (!bus) {
913+
pr_err("%s: Cannot find PCI bus for "
914+
"PHB#%d-PE#%x\n",
915+
__func__,
916+
pe->phb->global_number,
917+
pe->addr);
918+
break;
919+
}
912920
eeh_pe_dev_traverse(pe,
913921
eeh_report_failure, NULL);
914922
pcibios_remove_pci_devices(bus);

arch/powerpc/kernel/nvram_64.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -969,7 +969,7 @@ int __init nvram_remove_partition(const char *name, int sig,
969969

970970
/* Make partition a free partition */
971971
part->header.signature = NVRAM_SIG_FREE;
972-
strncpy(part->header.name, "wwwwwwwwwwww", 12);
972+
memset(part->header.name, 'w', 12);
973973
part->header.checksum = nvram_checksum(&part->header);
974974
rc = nvram_write_header(part);
975975
if (rc <= 0) {
@@ -987,8 +987,8 @@ int __init nvram_remove_partition(const char *name, int sig,
987987
}
988988
if (prev) {
989989
prev->header.length += part->header.length;
990-
prev->header.checksum = nvram_checksum(&part->header);
991-
rc = nvram_write_header(part);
990+
prev->header.checksum = nvram_checksum(&prev->header);
991+
rc = nvram_write_header(prev);
992992
if (rc <= 0) {
993993
printk(KERN_ERR "nvram_remove_partition: nvram_write failed (%d)\n", rc);
994994
return rc;

arch/powerpc/platforms/powernv/eeh-powernv.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -956,6 +956,11 @@ static int pnv_eeh_reset(struct eeh_pe *pe, int option)
956956
}
957957

958958
bus = eeh_pe_bus_get(pe);
959+
if (!bus) {
960+
pr_err("%s: Cannot find PCI bus for PHB#%d-PE#%x\n",
961+
__func__, pe->phb->global_number, pe->addr);
962+
return -EIO;
963+
}
959964
if (pci_is_root_bus(bus) ||
960965
pci_is_root_bus(bus->parent))
961966
ret = pnv_eeh_root_reset(hose, option);

arch/x86/include/asm/uaccess.h

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -405,11 +405,7 @@ do { \
405405
#define __get_user_asm_ex(x, addr, itype, rtype, ltype) \
406406
asm volatile("1: mov"itype" %1,%"rtype"0\n" \
407407
"2:\n" \
408-
".section .fixup,\"ax\"\n" \
409-
"3:xor"itype" %"rtype"0,%"rtype"0\n" \
410-
" jmp 2b\n" \
411-
".previous\n" \
412-
_ASM_EXTABLE_EX(1b, 3b) \
408+
_ASM_EXTABLE_EX(1b, 2b) \
413409
: ltype(x) : "m" (__m(addr)))
414410

415411
#define __put_user_nocheck(x, ptr, size) \

arch/x86/kernel/early-quirks.c

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -331,12 +331,11 @@ static u32 __init i85x_stolen_base(int num, int slot, int func, size_t stolen_si
331331

332332
static u32 __init i865_stolen_base(int num, int slot, int func, size_t stolen_size)
333333
{
334-
/*
335-
* FIXME is the graphics stolen memory region
336-
* always at TOUD? Ie. is it always the last
337-
* one to be allocated by the BIOS?
338-
*/
339-
return read_pci_config_16(0, 0, 0, I865_TOUD) << 16;
334+
u16 toud = 0;
335+
336+
toud = read_pci_config_16(0, 0, 0, I865_TOUD);
337+
338+
return (phys_addr_t)(toud << 16) + i845_tseg_size();
340339
}
341340

342341
static size_t __init i830_stolen_size(int num, int slot, int func)

crypto/gcm.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ static int crypto_gcm_setkey(struct crypto_aead *aead, const u8 *key,
117117
struct crypto_ablkcipher *ctr = ctx->ctr;
118118
struct {
119119
be128 hash;
120-
u8 iv[8];
120+
u8 iv[16];
121121

122122
struct crypto_gcm_setkey_result result;
123123

drivers/char/hw_random/omap-rng.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -385,7 +385,7 @@ static int omap_rng_probe(struct platform_device *pdev)
385385

386386
pm_runtime_enable(&pdev->dev);
387387
ret = pm_runtime_get_sync(&pdev->dev);
388-
if (ret) {
388+
if (ret < 0) {
389389
dev_err(&pdev->dev, "Failed to runtime_get device: %d\n", ret);
390390
pm_runtime_put_noidle(&pdev->dev);
391391
goto err_ioremap;
@@ -443,7 +443,7 @@ static int __maybe_unused omap_rng_resume(struct device *dev)
443443
int ret;
444444

445445
ret = pm_runtime_get_sync(dev);
446-
if (ret) {
446+
if (ret < 0) {
447447
dev_err(dev, "Failed to runtime_get device: %d\n", ret);
448448
pm_runtime_put_noidle(dev);
449449
return ret;

0 commit comments

Comments
 (0)