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 'akpm' (Andrew's patch-bomb)

Merge misc fixes from Andrew Morton.

* emailed from Andrew Morton <akpm@linux-foundation.org>: (4 patches)
frv: delete incorrect task prototypes causing compile fail
slub: missing test for partial pages flush work in flush_all()
fs, proc: fix ABBA deadlock in case of execution attempt of map_files/ entries
drivers/rtc/rtc-pl031.c: configure correct wday for 2000-01-01

+27 -17
-4
arch/frv/include/asm/processor.h
··· 135 135 #define KSTK_EIP(tsk) ((tsk)->thread.frame0->pc) 136 136 #define KSTK_ESP(tsk) ((tsk)->thread.frame0->sp) 137 137 138 - /* Allocation and freeing of basic task resources. */ 139 - extern struct task_struct *alloc_task_struct_node(int node); 140 - extern void free_task_struct(struct task_struct *p); 141 - 142 138 #define cpu_relax() barrier() 143 139 144 140 /* data cache prefetch */
+18
drivers/rtc/rtc-pl031.c
··· 312 312 int ret; 313 313 struct pl031_local *ldata; 314 314 struct rtc_class_ops *ops = id->data; 315 + unsigned long time; 315 316 316 317 ret = amba_request_regions(adev, NULL); 317 318 if (ret) ··· 343 342 if (ldata->hw_designer == AMBA_VENDOR_ST) 344 343 writel(readl(ldata->base + RTC_CR) | RTC_CR_CWEN, 345 344 ldata->base + RTC_CR); 345 + 346 + /* 347 + * On ST PL031 variants, the RTC reset value does not provide correct 348 + * weekday for 2000-01-01. Correct the erroneous sunday to saturday. 349 + */ 350 + if (ldata->hw_designer == AMBA_VENDOR_ST) { 351 + if (readl(ldata->base + RTC_YDR) == 0x2000) { 352 + time = readl(ldata->base + RTC_DR); 353 + if ((time & 354 + (RTC_MON_MASK | RTC_MDAY_MASK | RTC_WDAY_MASK)) 355 + == 0x02120000) { 356 + time = time | (0x7 << RTC_WDAY_SHIFT); 357 + writel(0x2000, ldata->base + RTC_YLR); 358 + writel(time, ldata->base + RTC_LR); 359 + } 360 + } 361 + } 346 362 347 363 ldata->rtc = rtc_device_register("pl031", &adev->dev, ops, 348 364 THIS_MODULE);
+8 -12
fs/proc/base.c
··· 2162 2162 goto out; 2163 2163 2164 2164 result = ERR_PTR(-EACCES); 2165 - if (lock_trace(task)) 2165 + if (!ptrace_may_access(task, PTRACE_MODE_READ)) 2166 2166 goto out_put_task; 2167 2167 2168 2168 result = ERR_PTR(-ENOENT); 2169 2169 if (dname_to_vma_addr(dentry, &vm_start, &vm_end)) 2170 - goto out_unlock; 2170 + goto out_put_task; 2171 2171 2172 2172 mm = get_task_mm(task); 2173 2173 if (!mm) 2174 - goto out_unlock; 2174 + goto out_put_task; 2175 2175 2176 2176 down_read(&mm->mmap_sem); 2177 2177 vma = find_exact_vma(mm, vm_start, vm_end); ··· 2183 2183 out_no_vma: 2184 2184 up_read(&mm->mmap_sem); 2185 2185 mmput(mm); 2186 - out_unlock: 2187 - unlock_trace(task); 2188 2186 out_put_task: 2189 2187 put_task_struct(task); 2190 2188 out: ··· 2216 2218 goto out; 2217 2219 2218 2220 ret = -EACCES; 2219 - if (lock_trace(task)) 2221 + if (!ptrace_may_access(task, PTRACE_MODE_READ)) 2220 2222 goto out_put_task; 2221 2223 2222 2224 ret = 0; ··· 2224 2226 case 0: 2225 2227 ino = inode->i_ino; 2226 2228 if (filldir(dirent, ".", 1, 0, ino, DT_DIR) < 0) 2227 - goto out_unlock; 2229 + goto out_put_task; 2228 2230 filp->f_pos++; 2229 2231 case 1: 2230 2232 ino = parent_ino(dentry); 2231 2233 if (filldir(dirent, "..", 2, 1, ino, DT_DIR) < 0) 2232 - goto out_unlock; 2234 + goto out_put_task; 2233 2235 filp->f_pos++; 2234 2236 default: 2235 2237 { ··· 2240 2242 2241 2243 mm = get_task_mm(task); 2242 2244 if (!mm) 2243 - goto out_unlock; 2245 + goto out_put_task; 2244 2246 down_read(&mm->mmap_sem); 2245 2247 2246 2248 nr_files = 0; ··· 2270 2272 flex_array_free(fa); 2271 2273 up_read(&mm->mmap_sem); 2272 2274 mmput(mm); 2273 - goto out_unlock; 2275 + goto out_put_task; 2274 2276 } 2275 2277 for (i = 0, vma = mm->mmap, pos = 2; vma; 2276 2278 vma = vma->vm_next) { ··· 2315 2317 } 2316 2318 } 2317 2319 2318 - out_unlock: 2319 - unlock_trace(task); 2320 2320 out_put_task: 2321 2321 put_task_struct(task); 2322 2322 out:
+1 -1
mm/slub.c
··· 2040 2040 struct kmem_cache *s = info; 2041 2041 struct kmem_cache_cpu *c = per_cpu_ptr(s->cpu_slab, cpu); 2042 2042 2043 - return !!(c->page); 2043 + return c->page || c->partial; 2044 2044 } 2045 2045 2046 2046 static void flush_all(struct kmem_cache *s)