Skip to content

Commit 3de674d

Browse files
committed
Linux 3.0.62
1 parent f055d17 commit 3de674d

16 files changed

Lines changed: 70 additions & 28 deletions

File tree

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
VERSION = 3
22
PATCHLEVEL = 0
3-
SUBLEVEL = 61
3+
SUBLEVEL = 62
44
EXTRAVERSION =
55
NAME = Sneaky Weasel
66

arch/arm/mm/dma-mapping.c

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -472,25 +472,27 @@ static void dma_cache_maint_page(struct page *page, unsigned long offset,
472472
size_t size, enum dma_data_direction dir,
473473
void (*op)(const void *, size_t, int))
474474
{
475+
unsigned long pfn;
476+
size_t left = size;
477+
478+
pfn = page_to_pfn(page) + offset / PAGE_SIZE;
479+
offset %= PAGE_SIZE;
480+
475481
/*
476482
* A single sg entry may refer to multiple physically contiguous
477483
* pages. But we still need to process highmem pages individually.
478484
* If highmem is not configured then the bulk of this loop gets
479485
* optimized out.
480486
*/
481-
size_t left = size;
482487
do {
483488
size_t len = left;
484489
void *vaddr;
485490

491+
page = pfn_to_page(pfn);
492+
486493
if (PageHighMem(page)) {
487-
if (len + offset > PAGE_SIZE) {
488-
if (offset >= PAGE_SIZE) {
489-
page += offset / PAGE_SIZE;
490-
offset %= PAGE_SIZE;
491-
}
494+
if (len + offset > PAGE_SIZE)
492495
len = PAGE_SIZE - offset;
493-
}
494496
vaddr = kmap_high_get(page);
495497
if (vaddr) {
496498
vaddr += offset;
@@ -507,7 +509,7 @@ static void dma_cache_maint_page(struct page *page, unsigned long offset,
507509
op(vaddr, len, dir);
508510
}
509511
offset = 0;
510-
page++;
512+
pfn++;
511513
left -= len;
512514
} while (left);
513515
}

arch/x86/kernel/msr.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,9 @@ static int msr_open(struct inode *inode, struct file *file)
175175
unsigned int cpu;
176176
struct cpuinfo_x86 *c;
177177

178+
if (!capable(CAP_SYS_RAWIO))
179+
return -EPERM;
180+
178181
cpu = iminor(file->f_path.dentry->d_inode);
179182
if (cpu >= nr_cpu_ids || !cpu_online(cpu))
180183
return -ENXIO; /* No such CPU */

arch/x86/kernel/setup.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -633,6 +633,7 @@ static unsigned reserve_low = CONFIG_X86_RESERVE_LOW << 10;
633633

634634
static bool __init snb_gfx_workaround_needed(void)
635635
{
636+
#ifdef CONFIG_PCI
636637
int i;
637638
u16 vendor, devid;
638639
static const u16 snb_ids[] = {
@@ -657,6 +658,7 @@ static bool __init snb_gfx_workaround_needed(void)
657658
for (i = 0; i < ARRAY_SIZE(snb_ids); i++)
658659
if (devid == snb_ids[i])
659660
return true;
661+
#endif
660662

661663
return false;
662664
}

arch/x86/platform/efi/efi_64.c

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
#include <asm/cacheflush.h>
3939
#include <asm/fixmap.h>
4040

41-
static pgd_t save_pgd __initdata;
41+
static pgd_t *save_pgd __initdata;
4242
static unsigned long efi_flags __initdata;
4343

4444
static void __init early_code_mapping_set_exec(int executable)
@@ -61,12 +61,20 @@ static void __init early_code_mapping_set_exec(int executable)
6161
void __init efi_call_phys_prelog(void)
6262
{
6363
unsigned long vaddress;
64+
int pgd;
65+
int n_pgds;
6466

6567
early_code_mapping_set_exec(1);
6668
local_irq_save(efi_flags);
67-
vaddress = (unsigned long)__va(0x0UL);
68-
save_pgd = *pgd_offset_k(0x0UL);
69-
set_pgd(pgd_offset_k(0x0UL), *pgd_offset_k(vaddress));
69+
70+
n_pgds = DIV_ROUND_UP((max_pfn << PAGE_SHIFT), PGDIR_SIZE);
71+
save_pgd = kmalloc(n_pgds * sizeof(pgd_t), GFP_KERNEL);
72+
73+
for (pgd = 0; pgd < n_pgds; pgd++) {
74+
save_pgd[pgd] = *pgd_offset_k(pgd * PGDIR_SIZE);
75+
vaddress = (unsigned long)__va(pgd * PGDIR_SIZE);
76+
set_pgd(pgd_offset_k(pgd * PGDIR_SIZE), *pgd_offset_k(vaddress));
77+
}
7078
__flush_tlb_all();
7179
}
7280

@@ -75,7 +83,11 @@ void __init efi_call_phys_epilog(void)
7583
/*
7684
* After the lock is released, the original page table is restored.
7785
*/
78-
set_pgd(pgd_offset_k(0x0UL), save_pgd);
86+
int pgd;
87+
int n_pgds = DIV_ROUND_UP((max_pfn << PAGE_SHIFT) , PGDIR_SIZE);
88+
for (pgd = 0; pgd < n_pgds; pgd++)
89+
set_pgd(pgd_offset_k(pgd * PGDIR_SIZE), save_pgd[pgd]);
90+
kfree(save_pgd);
7991
__flush_tlb_all();
8092
local_irq_restore(efi_flags);
8193
early_code_mapping_set_exec(0);

drivers/edac/edac_pci_sysfs.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ static ssize_t edac_pci_dev_store(struct kobject *kobj,
257257
struct edac_pci_dev_attribute *edac_pci_dev;
258258
edac_pci_dev = (struct edac_pci_dev_attribute *)attr;
259259

260-
if (edac_pci_dev->show)
260+
if (edac_pci_dev->store)
261261
return edac_pci_dev->store(edac_pci_dev->value, buffer, count);
262262
return -EIO;
263263
}

drivers/net/can/c_can/c_can.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -916,7 +916,7 @@ static int c_can_handle_bus_err(struct net_device *dev,
916916
break;
917917
case LEC_ACK_ERROR:
918918
netdev_dbg(dev, "ack error\n");
919-
cf->data[2] |= (CAN_ERR_PROT_LOC_ACK |
919+
cf->data[3] |= (CAN_ERR_PROT_LOC_ACK |
920920
CAN_ERR_PROT_LOC_ACK_DEL);
921921
break;
922922
case LEC_BIT1_ERROR:
@@ -929,7 +929,7 @@ static int c_can_handle_bus_err(struct net_device *dev,
929929
break;
930930
case LEC_CRC_ERROR:
931931
netdev_dbg(dev, "CRC error\n");
932-
cf->data[2] |= (CAN_ERR_PROT_LOC_CRC_SEQ |
932+
cf->data[3] |= (CAN_ERR_PROT_LOC_CRC_SEQ |
933933
CAN_ERR_PROT_LOC_CRC_DEL);
934934
break;
935935
default:

drivers/net/can/pch_can.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -559,7 +559,7 @@ static void pch_can_error(struct net_device *ndev, u32 status)
559559
stats->rx_errors++;
560560
break;
561561
case PCH_CRC_ERR:
562-
cf->data[2] |= CAN_ERR_PROT_LOC_CRC_SEQ |
562+
cf->data[3] |= CAN_ERR_PROT_LOC_CRC_SEQ |
563563
CAN_ERR_PROT_LOC_CRC_DEL;
564564
priv->can.can_stats.bus_error++;
565565
stats->rx_errors++;

drivers/net/can/ti_hecc.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -734,12 +734,12 @@ static int ti_hecc_error(struct net_device *ndev, int int_status,
734734
}
735735
if (err_status & HECC_CANES_CRCE) {
736736
hecc_set_bit(priv, HECC_CANES, HECC_CANES_CRCE);
737-
cf->data[2] |= CAN_ERR_PROT_LOC_CRC_SEQ |
737+
cf->data[3] |= CAN_ERR_PROT_LOC_CRC_SEQ |
738738
CAN_ERR_PROT_LOC_CRC_DEL;
739739
}
740740
if (err_status & HECC_CANES_ACKE) {
741741
hecc_set_bit(priv, HECC_CANES, HECC_CANES_ACKE);
742-
cf->data[2] |= CAN_ERR_PROT_LOC_ACK |
742+
cf->data[3] |= CAN_ERR_PROT_LOC_ACK |
743743
CAN_ERR_PROT_LOC_ACK_DEL;
744744
}
745745
}

drivers/net/wireless/ath/ath9k/beacon.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,7 @@ static struct ath_buf *ath_beacon_generate(struct ieee80211_hw *hw,
159159
skb->len, DMA_TO_DEVICE);
160160
dev_kfree_skb_any(skb);
161161
bf->bf_buf_addr = 0;
162+
bf->bf_mpdu = NULL;
162163
}
163164

164165
/* Get a new beacon from mac80211 */

0 commit comments

Comments
 (0)