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

Merge commit 'v3.1-rc6' into core/locking

Merge reason: We are queueing up locking annotation patches, move to a fresh base

Signed-off-by: Ingo Molnar <mingo@elte.hu>

+360 -194
+19 -19
Documentation/DocBook/media/v4l/controls.xml
··· 1455 1455 </row> 1456 1456 1457 1457 <row><entry></entry></row> 1458 - <row> 1458 + <row id="v4l2-mpeg-video-h264-vui-sar-idc"> 1459 1459 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC</constant>&nbsp;</entry> 1460 1460 <entry>enum&nbsp;v4l2_mpeg_video_h264_vui_sar_idc</entry> 1461 1461 </row> ··· 1561 1561 </row> 1562 1562 1563 1563 <row><entry></entry></row> 1564 - <row> 1564 + <row id="v4l2-mpeg-video-h264-level"> 1565 1565 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_LEVEL</constant>&nbsp;</entry> 1566 1566 <entry>enum&nbsp;v4l2_mpeg_video_h264_level</entry> 1567 1567 </row> ··· 1641 1641 </row> 1642 1642 1643 1643 <row><entry></entry></row> 1644 - <row> 1644 + <row id="v4l2-mpeg-video-mpeg4-level"> 1645 1645 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL</constant>&nbsp;</entry> 1646 1646 <entry>enum&nbsp;v4l2_mpeg_video_mpeg4_level</entry> 1647 1647 </row> ··· 1689 1689 </row> 1690 1690 1691 1691 <row><entry></entry></row> 1692 - <row> 1692 + <row id="v4l2-mpeg-video-h264-profile"> 1693 1693 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_PROFILE</constant>&nbsp;</entry> 1694 - <entry>enum&nbsp;v4l2_mpeg_h264_profile</entry> 1694 + <entry>enum&nbsp;v4l2_mpeg_video_h264_profile</entry> 1695 1695 </row> 1696 1696 <row><entry spanname="descr">The profile information for H264. 1697 1697 Applicable to the H264 encoder. ··· 1774 1774 </row> 1775 1775 1776 1776 <row><entry></entry></row> 1777 - <row> 1777 + <row id="v4l2-mpeg-video-mpeg4-profile"> 1778 1778 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE</constant>&nbsp;</entry> 1779 - <entry>enum&nbsp;v4l2_mpeg_mpeg4_profile</entry> 1779 + <entry>enum&nbsp;v4l2_mpeg_video_mpeg4_profile</entry> 1780 1780 </row> 1781 1781 <row><entry spanname="descr">The profile information for MPEG4. 1782 1782 Applicable to the MPEG4 encoder. ··· 1820 1820 </row> 1821 1821 1822 1822 <row><entry></entry></row> 1823 - <row> 1823 + <row id="v4l2-mpeg-video-multi-slice-mode"> 1824 1824 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE</constant>&nbsp;</entry> 1825 - <entry>enum&nbsp;v4l2_mpeg_multi_slice_mode</entry> 1825 + <entry>enum&nbsp;v4l2_mpeg_video_multi_slice_mode</entry> 1826 1826 </row> 1827 1827 <row><entry spanname="descr">Determines how the encoder should handle division of frame into slices. 1828 1828 Applicable to the encoder. ··· 1868 1868 </row> 1869 1869 1870 1870 <row><entry></entry></row> 1871 - <row> 1871 + <row id="v4l2-mpeg-video-h264-loop-filter-mode"> 1872 1872 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE</constant>&nbsp;</entry> 1873 - <entry>enum&nbsp;v4l2_mpeg_h264_loop_filter_mode</entry> 1873 + <entry>enum&nbsp;v4l2_mpeg_video_h264_loop_filter_mode</entry> 1874 1874 </row> 1875 1875 <row><entry spanname="descr">Loop filter mode for H264 encoder. 1876 1876 Possible values are:</entry> ··· 1913 1913 </row> 1914 1914 1915 1915 <row><entry></entry></row> 1916 - <row> 1916 + <row id="v4l2-mpeg-video-h264-entropy-mode"> 1917 1917 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE</constant>&nbsp;</entry> 1918 - <entry>enum&nbsp;v4l2_mpeg_h264_symbol_mode</entry> 1918 + <entry>enum&nbsp;v4l2_mpeg_video_h264_entropy_mode</entry> 1919 1919 </row> 1920 1920 <row><entry spanname="descr">Entropy coding mode for H264 - CABAC/CAVALC. 1921 1921 Applicable to the H264 encoder. ··· 2140 2140 </row> 2141 2141 2142 2142 <row><entry></entry></row> 2143 - <row> 2143 + <row id="v4l2-mpeg-video-header-mode"> 2144 2144 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_HEADER_MODE</constant>&nbsp;</entry> 2145 - <entry>enum&nbsp;v4l2_mpeg_header_mode</entry> 2145 + <entry>enum&nbsp;v4l2_mpeg_video_header_mode</entry> 2146 2146 </row> 2147 2147 <row><entry spanname="descr">Determines whether the header is returned as the first buffer or is 2148 2148 it returned together with the first frame. Applicable to encoders. ··· 2320 2320 Applicable to the H264 encoder.</entry> 2321 2321 </row> 2322 2322 <row><entry></entry></row> 2323 - <row> 2323 + <row id="v4l2-mpeg-mfc51-video-frame-skip-mode"> 2324 2324 <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE</constant>&nbsp;</entry> 2325 - <entry>enum&nbsp;v4l2_mpeg_mfc51_frame_skip_mode</entry> 2325 + <entry>enum&nbsp;v4l2_mpeg_mfc51_video_frame_skip_mode</entry> 2326 2326 </row> 2327 2327 <row><entry spanname="descr"> 2328 2328 Indicates in what conditions the encoder should skip frames. If encoding a frame would cause the encoded stream to be larger then ··· 2361 2361 </entry> 2362 2362 </row> 2363 2363 <row><entry></entry></row> 2364 - <row> 2364 + <row id="v4l2-mpeg-mfc51-video-force-frame-type"> 2365 2365 <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE</constant>&nbsp;</entry> 2366 - <entry>enum&nbsp;v4l2_mpeg_mfc51_force_frame_type</entry> 2366 + <entry>enum&nbsp;v4l2_mpeg_mfc51_video_force_frame_type</entry> 2367 2367 </row> 2368 2368 <row><entry spanname="descr">Force a frame type for the next queued buffer. Applicable to encoders. 2369 2369 Possible values are:</entry>
+2
Documentation/ioctl/ioctl-number.txt
··· 319 319 <mailto:thomas@winischhofer.net> 320 320 0xF4 00-1F video/mbxfb.h mbxfb 321 321 <mailto:raph@8d.com> 322 + 0xF6 all LTTng Linux Trace Toolkit Next Generation 323 + <mailto:mathieu.desnoyers@efficios.com> 322 324 0xFD all linux/dm-ioctl.h
+1 -1
Makefile
··· 1 1 VERSION = 3 2 2 PATCHLEVEL = 1 3 3 SUBLEVEL = 0 4 - EXTRAVERSION = -rc5 4 + EXTRAVERSION = -rc6 5 5 NAME = "Divemaster Edition" 6 6 7 7 # *DOCUMENTATION*
-1
arch/arm/mach-cns3xxx/include/mach/entry-macro.S
··· 8 8 * published by the Free Software Foundation. 9 9 */ 10 10 11 - #include <mach/hardware.h> 12 11 #include <asm/hardware/entry-macro-gic.S> 13 12 14 13 .macro disable_fiq
-1
arch/arm/mach-cns3xxx/include/mach/system.h
··· 13 13 14 14 #include <linux/io.h> 15 15 #include <asm/proc-fns.h> 16 - #include <mach/hardware.h> 17 16 18 17 static inline void arch_idle(void) 19 18 {
-1
arch/arm/mach-cns3xxx/include/mach/uncompress.h
··· 8 8 */ 9 9 10 10 #include <asm/mach-types.h> 11 - #include <mach/hardware.h> 12 11 #include <mach/cns3xxx.h> 13 12 14 13 #define AMBA_UART_DR(base) (*(volatile unsigned char *)((base) + 0x00))
+1 -1
arch/arm/mach-cns3xxx/pcie.c
··· 49 49 return &cns3xxx_pcie[root->domain]; 50 50 } 51 51 52 - static struct cns3xxx_pcie *pdev_to_cnspci(struct pci_dev *dev) 52 + static struct cns3xxx_pcie *pdev_to_cnspci(const struct pci_dev *dev) 53 53 { 54 54 return sysdata_to_cnspci(dev->sysdata); 55 55 }
+28
arch/arm/mach-davinci/board-da850-evm.c
··· 115 115 }, 116 116 }; 117 117 118 + #ifdef CONFIG_MTD 119 + static void da850_evm_m25p80_notify_add(struct mtd_info *mtd) 120 + { 121 + char *mac_addr = davinci_soc_info.emac_pdata->mac_addr; 122 + size_t retlen; 123 + 124 + if (!strcmp(mtd->name, "MAC-Address")) { 125 + mtd->read(mtd, 0, ETH_ALEN, &retlen, mac_addr); 126 + if (retlen == ETH_ALEN) 127 + pr_info("Read MAC addr from SPI Flash: %pM\n", 128 + mac_addr); 129 + } 130 + } 131 + 132 + static struct mtd_notifier da850evm_spi_notifier = { 133 + .add = da850_evm_m25p80_notify_add, 134 + }; 135 + 136 + static void da850_evm_setup_mac_addr(void) 137 + { 138 + register_mtd_user(&da850evm_spi_notifier); 139 + } 140 + #else 141 + static void da850_evm_setup_mac_addr(void) { } 142 + #endif 143 + 118 144 static struct mtd_partition da850_evm_norflash_partition[] = { 119 145 { 120 146 .name = "bootloaders + env", ··· 1270 1244 if (ret) 1271 1245 pr_warning("da850_evm_init: sata registration failed: %d\n", 1272 1246 ret); 1247 + 1248 + da850_evm_setup_mac_addr(); 1273 1249 } 1274 1250 1275 1251 #ifdef CONFIG_SERIAL_8250_CONSOLE
+1 -1
arch/arm/mach-davinci/include/mach/psc.h
··· 243 243 #define PSC_STATE_DISABLE 2 244 244 #define PSC_STATE_ENABLE 3 245 245 246 - #define MDSTAT_STATE_MASK 0x1f 246 + #define MDSTAT_STATE_MASK 0x3f 247 247 #define MDCTL_FORCE BIT(31) 248 248 249 249 #ifndef __ASSEMBLER__
+5 -1
arch/arm/mach-davinci/sleep.S
··· 217 217 ENDPROC(davinci_ddr_psc_config) 218 218 219 219 CACHE_FLUSH: 220 - .word arm926_flush_kern_cache_all 220 + #ifdef CONFIG_CPU_V6 221 + .word v6_flush_kern_cache_all 222 + #else 223 + .word arm926_flush_kern_cache_all 224 + #endif 221 225 222 226 ENTRY(davinci_cpu_suspend_sz) 223 227 .word . - davinci_cpu_suspend
+2
arch/arm/mach-omap2/clock3xxx_data.c
··· 3078 3078 .name = "gpt12_fck", 3079 3079 .ops = &clkops_null, 3080 3080 .parent = &secure_32k_fck, 3081 + .clkdm_name = "wkup_clkdm", 3081 3082 .recalc = &followparent_recalc, 3082 3083 }; 3083 3084 ··· 3086 3085 .name = "wdt1_fck", 3087 3086 .ops = &clkops_null, 3088 3087 .parent = &secure_32k_fck, 3088 + .clkdm_name = "wkup_clkdm", 3089 3089 .recalc = &followparent_recalc, 3090 3090 }; 3091 3091
+9 -1
arch/arm/mach-omap2/clock44xx_data.c
··· 3376 3376 } else if (cpu_is_omap446x()) { 3377 3377 cpu_mask = RATE_IN_4460; 3378 3378 cpu_clkflg = CK_446X; 3379 + } else { 3380 + return 0; 3379 3381 } 3380 3382 3381 3383 clk_init(&omap2_clk_functions); 3382 - omap2_clk_disable_clkdm_control(); 3384 + 3385 + /* 3386 + * Must stay commented until all OMAP SoC drivers are 3387 + * converted to runtime PM, or drivers may start crashing 3388 + * 3389 + * omap2_clk_disable_clkdm_control(); 3390 + */ 3383 3391 3384 3392 for (c = omap44xx_clks; c < omap44xx_clks + ARRAY_SIZE(omap44xx_clks); 3385 3393 c++)
+2
arch/arm/mach-omap2/clockdomain.c
··· 747 747 spin_lock_irqsave(&clkdm->lock, flags); 748 748 clkdm->_flags &= ~_CLKDM_FLAG_HWSUP_ENABLED; 749 749 ret = arch_clkdm->clkdm_wakeup(clkdm); 750 + ret |= pwrdm_state_switch(clkdm->pwrdm.ptr); 750 751 spin_unlock_irqrestore(&clkdm->lock, flags); 751 752 return ret; 752 753 } ··· 819 818 spin_lock_irqsave(&clkdm->lock, flags); 820 819 clkdm->_flags &= ~_CLKDM_FLAG_HWSUP_ENABLED; 821 820 arch_clkdm->clkdm_deny_idle(clkdm); 821 + pwrdm_state_switch(clkdm->pwrdm.ptr); 822 822 spin_unlock_irqrestore(&clkdm->lock, flags); 823 823 } 824 824
+1
arch/arm/mach-omap2/omap_hwmod_2430_data.c
··· 192 192 .pa_end = OMAP243X_HS_BASE + SZ_4K - 1, 193 193 .flags = ADDR_TYPE_RT 194 194 }, 195 + { } 195 196 }; 196 197 197 198 /* l4_core ->usbhsotg interface */
-2
arch/arm/mach-omap2/pm.c
··· 130 130 } else { 131 131 hwsup = clkdm_in_hwsup(pwrdm->pwrdm_clkdms[0]); 132 132 clkdm_wakeup(pwrdm->pwrdm_clkdms[0]); 133 - pwrdm_wait_transition(pwrdm); 134 133 sleep_switch = FORCEWAKEUP_SWITCH; 135 134 } 136 135 } ··· 155 156 return ret; 156 157 } 157 158 158 - pwrdm_wait_transition(pwrdm); 159 159 pwrdm_state_switch(pwrdm); 160 160 err: 161 161 return ret;
+16 -9
arch/arm/mach-omap2/powerdomain.c
··· 195 195 196 196 /** 197 197 * pwrdm_init - set up the powerdomain layer 198 - * @pwrdm_list: array of struct powerdomain pointers to register 198 + * @pwrdms: array of struct powerdomain pointers to register 199 199 * @custom_funcs: func pointers for arch specific implementations 200 200 * 201 - * Loop through the array of powerdomains @pwrdm_list, registering all 202 - * that are available on the current CPU. If pwrdm_list is supplied 203 - * and not null, all of the referenced powerdomains will be 204 - * registered. No return value. XXX pwrdm_list is not really a 205 - * "list"; it is an array. Rename appropriately. 201 + * Loop through the array of powerdomains @pwrdms, registering all 202 + * that are available on the current CPU. Also, program all 203 + * powerdomain target state as ON; this is to prevent domains from 204 + * hitting low power states (if bootloader has target states set to 205 + * something other than ON) and potentially even losing context while 206 + * PM is not fully initialized. The PM late init code can then program 207 + * the desired target state for all the power domains. No return 208 + * value. 206 209 */ 207 - void pwrdm_init(struct powerdomain **pwrdm_list, struct pwrdm_ops *custom_funcs) 210 + void pwrdm_init(struct powerdomain **pwrdms, struct pwrdm_ops *custom_funcs) 208 211 { 209 212 struct powerdomain **p = NULL; 213 + struct powerdomain *temp_p; 210 214 211 215 if (!custom_funcs) 212 216 WARN(1, "powerdomain: No custom pwrdm functions registered\n"); 213 217 else 214 218 arch_pwrdm = custom_funcs; 215 219 216 - if (pwrdm_list) { 217 - for (p = pwrdm_list; *p; p++) 220 + if (pwrdms) { 221 + for (p = pwrdms; *p; p++) 218 222 _pwrdm_register(*p); 219 223 } 224 + 225 + list_for_each_entry(temp_p, &pwrdm_list, node) 226 + pwrdm_set_next_pwrst(temp_p, PWRDM_POWER_ON); 220 227 } 221 228 222 229 /**
+1
arch/arm/mach-prima2/clock.c
··· 481 481 482 482 static struct of_device_id clkc_ids[] = { 483 483 { .compatible = "sirf,prima2-clkc" }, 484 + {}, 484 485 }; 485 486 486 487 void __init sirfsoc_of_clk_init(void)
+1
arch/arm/mach-prima2/irq.c
··· 51 51 52 52 static struct of_device_id intc_ids[] = { 53 53 { .compatible = "sirf,prima2-intc" }, 54 + {}, 54 55 }; 55 56 56 57 void __init sirfsoc_of_irq_init(void)
+1
arch/arm/mach-prima2/rstc.c
··· 19 19 20 20 static struct of_device_id rstc_ids[] = { 21 21 { .compatible = "sirf,prima2-rstc" }, 22 + {}, 22 23 }; 23 24 24 25 static int __init sirfsoc_of_rstc_init(void)
+1
arch/arm/mach-prima2/timer.c
··· 190 190 191 191 static struct of_device_id timer_ids[] = { 192 192 { .compatible = "sirf,prima2-tick" }, 193 + {}, 193 194 }; 194 195 195 196 static void __init sirfsoc_of_timer_map(void)
+3
arch/arm/plat-omap/omap_device.c
··· 615 615 616 616 return pm_generic_resume_noirq(dev); 617 617 } 618 + #else 619 + #define _od_suspend_noirq NULL 620 + #define _od_resume_noirq NULL 618 621 #endif 619 622 620 623 static struct dev_pm_domain omap_device_pm_domain = {
+57 -2
arch/openrisc/include/asm/dma-mapping.h
··· 31 31 32 32 #define DMA_ERROR_CODE (~(dma_addr_t)0x0) 33 33 34 - int dma_mapping_error(struct device *dev, dma_addr_t dma_addr); 35 34 36 35 #define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f) 37 36 #define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h) ··· 46 47 void or1k_unmap_page(struct device *dev, dma_addr_t dma_handle, 47 48 size_t size, enum dma_data_direction dir, 48 49 struct dma_attrs *attrs); 50 + int or1k_map_sg(struct device *dev, struct scatterlist *sg, 51 + int nents, enum dma_data_direction dir, 52 + struct dma_attrs *attrs); 53 + void or1k_unmap_sg(struct device *dev, struct scatterlist *sg, 54 + int nents, enum dma_data_direction dir, 55 + struct dma_attrs *attrs); 49 56 void or1k_sync_single_for_cpu(struct device *dev, 50 57 dma_addr_t dma_handle, size_t size, 51 58 enum dma_data_direction dir); ··· 103 98 debug_dma_unmap_page(dev, addr, size, dir, true); 104 99 } 105 100 101 + static inline int dma_map_sg(struct device *dev, struct scatterlist *sg, 102 + int nents, enum dma_data_direction dir) 103 + { 104 + int i, ents; 105 + struct scatterlist *s; 106 + 107 + for_each_sg(sg, s, nents, i) 108 + kmemcheck_mark_initialized(sg_virt(s), s->length); 109 + BUG_ON(!valid_dma_direction(dir)); 110 + ents = or1k_map_sg(dev, sg, nents, dir, NULL); 111 + debug_dma_map_sg(dev, sg, nents, ents, dir); 112 + 113 + return ents; 114 + } 115 + 116 + static inline void dma_unmap_sg(struct device *dev, struct scatterlist *sg, 117 + int nents, enum dma_data_direction dir) 118 + { 119 + BUG_ON(!valid_dma_direction(dir)); 120 + debug_dma_unmap_sg(dev, sg, nents, dir); 121 + or1k_unmap_sg(dev, sg, nents, dir, NULL); 122 + } 123 + 124 + static inline dma_addr_t dma_map_page(struct device *dev, struct page *page, 125 + size_t offset, size_t size, 126 + enum dma_data_direction dir) 127 + { 128 + dma_addr_t addr; 129 + 130 + kmemcheck_mark_initialized(page_address(page) + offset, size); 131 + BUG_ON(!valid_dma_direction(dir)); 132 + addr = or1k_map_page(dev, page, offset, size, dir, NULL); 133 + debug_dma_map_page(dev, page, offset, size, dir, addr, false); 134 + 135 + return addr; 136 + } 137 + 138 + static inline void dma_unmap_page(struct device *dev, dma_addr_t addr, 139 + size_t size, enum dma_data_direction dir) 140 + { 141 + BUG_ON(!valid_dma_direction(dir)); 142 + or1k_unmap_page(dev, addr, size, dir, NULL); 143 + debug_dma_unmap_page(dev, addr, size, dir, true); 144 + } 145 + 106 146 static inline void dma_sync_single_for_cpu(struct device *dev, dma_addr_t addr, 107 147 size_t size, 108 148 enum dma_data_direction dir) ··· 169 119 static inline int dma_supported(struct device *dev, u64 dma_mask) 170 120 { 171 121 /* Support 32 bit DMA mask exclusively */ 172 - return dma_mask == 0xffffffffULL; 122 + return dma_mask == DMA_BIT_MASK(32); 123 + } 124 + 125 + static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr) 126 + { 127 + return 0; 173 128 } 174 129 175 130 static inline int dma_set_mask(struct device *dev, u64 dma_mask)
+1 -6
arch/openrisc/include/asm/sigcontext.h
··· 23 23 24 24 /* This struct is saved by setup_frame in signal.c, to keep the current 25 25 context while a signal handler is executed. It's restored by sys_sigreturn. 26 - 27 - To keep things simple, we use pt_regs here even though normally you just 28 - specify the list of regs to save. Then we can use copy_from_user on the 29 - entire regs instead of a bunch of get_user's as well... 30 26 */ 31 27 32 28 struct sigcontext { 33 - struct pt_regs regs; /* needs to be first */ 29 + struct user_regs_struct regs; /* needs to be first */ 34 30 unsigned long oldmask; 35 - unsigned long usp; /* usp before stacking this gunk on it */ 36 31 }; 37 32 38 33 #endif /* __ASM_OPENRISC_SIGCONTEXT_H */
+27 -1
arch/openrisc/kernel/dma.c
··· 154 154 /* Nothing special to do here... */ 155 155 } 156 156 157 + int or1k_map_sg(struct device *dev, struct scatterlist *sg, 158 + int nents, enum dma_data_direction dir, 159 + struct dma_attrs *attrs) 160 + { 161 + struct scatterlist *s; 162 + int i; 163 + 164 + for_each_sg(sg, s, nents, i) { 165 + s->dma_address = or1k_map_page(dev, sg_page(s), s->offset, 166 + s->length, dir, NULL); 167 + } 168 + 169 + return nents; 170 + } 171 + 172 + void or1k_unmap_sg(struct device *dev, struct scatterlist *sg, 173 + int nents, enum dma_data_direction dir, 174 + struct dma_attrs *attrs) 175 + { 176 + struct scatterlist *s; 177 + int i; 178 + 179 + for_each_sg(sg, s, nents, i) { 180 + or1k_unmap_page(dev, sg_dma_address(s), sg_dma_len(s), dir, NULL); 181 + } 182 + } 183 + 157 184 void or1k_sync_single_for_cpu(struct device *dev, 158 185 dma_addr_t dma_handle, size_t size, 159 186 enum dma_data_direction dir) ··· 214 187 215 188 return 0; 216 189 } 217 - 218 190 fs_initcall(dma_init);
+11 -18
arch/openrisc/kernel/signal.c
··· 52 52 static int restore_sigcontext(struct pt_regs *regs, struct sigcontext *sc) 53 53 { 54 54 unsigned int err = 0; 55 - unsigned long old_usp; 56 55 57 56 /* Alwys make any pending restarted system call return -EINTR */ 58 57 current_thread_info()->restart_block.fn = do_no_restart_syscall; 59 58 60 - /* restore the regs from &sc->regs (same as sc, since regs is first) 59 + /* 60 + * Restore the regs from &sc->regs. 61 61 * (sc is already checked for VERIFY_READ since the sigframe was 62 62 * checked in sys_sigreturn previously) 63 63 */ 64 - 65 - if (__copy_from_user(regs, sc, sizeof(struct pt_regs))) 64 + if (__copy_from_user(regs, sc->regs.gpr, 32 * sizeof(unsigned long))) 65 + goto badframe; 66 + if (__copy_from_user(&regs->pc, &sc->regs.pc, sizeof(unsigned long))) 67 + goto badframe; 68 + if (__copy_from_user(&regs->sr, &sc->regs.sr, sizeof(unsigned long))) 66 69 goto badframe; 67 70 68 71 /* make sure the SM-bit is cleared so user-mode cannot fool us */ 69 72 regs->sr &= ~SPR_SR_SM; 70 - 71 - /* restore the old USP as it was before we stacked the sc etc. 72 - * (we cannot just pop the sigcontext since we aligned the sp and 73 - * stuff after pushing it) 74 - */ 75 - 76 - err |= __get_user(old_usp, &sc->usp); 77 - 78 - regs->sp = old_usp; 79 73 80 74 /* TODO: the other ports use regs->orig_XX to disable syscall checks 81 75 * after this completes, but we don't use that mechanism. maybe we can ··· 131 137 unsigned long mask) 132 138 { 133 139 int err = 0; 134 - unsigned long usp = regs->sp; 135 140 136 - /* copy the regs. they are first in sc so we can use sc directly */ 141 + /* copy the regs */ 137 142 138 - err |= __copy_to_user(sc, regs, sizeof(struct pt_regs)); 143 + err |= __copy_to_user(sc->regs.gpr, regs, 32 * sizeof(unsigned long)); 144 + err |= __copy_to_user(&sc->regs.pc, &regs->pc, sizeof(unsigned long)); 145 + err |= __copy_to_user(&sc->regs.sr, &regs->sr, sizeof(unsigned long)); 139 146 140 147 /* then some other stuff */ 141 148 142 149 err |= __put_user(mask, &sc->oldmask); 143 - 144 - err |= __put_user(usp, &sc->usp); 145 150 146 151 return err; 147 152 }
-1
drivers/gpu/drm/drm_fb_helper.c
··· 256 256 { 257 257 printk(KERN_ERR "panic occurred, switching back to text console\n"); 258 258 return drm_fb_helper_force_kernel_mode(); 259 - return 0; 260 259 } 261 260 EXPORT_SYMBOL(drm_fb_helper_panic); 262 261
+2 -1
drivers/gpu/drm/nouveau/nouveau_fence.c
··· 530 530 nouveau_gpuobj_ref(NULL, &obj); 531 531 if (ret) 532 532 return ret; 533 - } else { 533 + } else 534 + if (USE_SEMA(dev)) { 534 535 /* map fence bo into channel's vm */ 535 536 ret = nouveau_bo_vma_add(dev_priv->fence.bo, chan->vm, 536 537 &chan->fence.vma);
+5 -2
drivers/gpu/drm/nouveau/nouveau_sgdma.c
··· 37 37 return -ENOMEM; 38 38 39 39 nvbe->ttm_alloced = kmalloc(sizeof(bool) * num_pages, GFP_KERNEL); 40 - if (!nvbe->ttm_alloced) 40 + if (!nvbe->ttm_alloced) { 41 + kfree(nvbe->pages); 42 + nvbe->pages = NULL; 41 43 return -ENOMEM; 44 + } 42 45 43 46 nvbe->nr_pages = 0; 44 47 while (num_pages--) { ··· 129 126 130 127 for (j = 0; j < PAGE_SIZE / NV_CTXDMA_PAGE_SIZE; j++, pte++) { 131 128 nv_wo32(gpuobj, (pte * 4) + 0, offset_l | 3); 132 - dma_offset += NV_CTXDMA_PAGE_SIZE; 129 + offset_l += NV_CTXDMA_PAGE_SIZE; 133 130 } 134 131 } 135 132
+13 -2
drivers/gpu/drm/nouveau/nv04_crtc.c
··· 781 781 struct drm_device *dev = crtc->dev; 782 782 struct drm_nouveau_private *dev_priv = dev->dev_private; 783 783 struct nv04_crtc_reg *regp = &dev_priv->mode_reg.crtc_reg[nv_crtc->index]; 784 - struct drm_framebuffer *drm_fb = nv_crtc->base.fb; 785 - struct nouveau_framebuffer *fb = nouveau_framebuffer(drm_fb); 784 + struct drm_framebuffer *drm_fb; 785 + struct nouveau_framebuffer *fb; 786 786 int arb_burst, arb_lwm; 787 787 int ret; 788 + 789 + NV_DEBUG_KMS(dev, "index %d\n", nv_crtc->index); 790 + 791 + /* no fb bound */ 792 + if (!atomic && !crtc->fb) { 793 + NV_DEBUG_KMS(dev, "No FB bound\n"); 794 + return 0; 795 + } 796 + 788 797 789 798 /* If atomic, we want to switch to the fb we were passed, so 790 799 * now we update pointers to do that. (We don't pin; just ··· 803 794 drm_fb = passed_fb; 804 795 fb = nouveau_framebuffer(passed_fb); 805 796 } else { 797 + drm_fb = crtc->fb; 798 + fb = nouveau_framebuffer(crtc->fb); 806 799 /* If not atomic, we can go ahead and pin, and unpin the 807 800 * old fb we were passed. 808 801 */
+10 -2
drivers/gpu/drm/nouveau/nv50_crtc.c
··· 519 519 struct drm_device *dev = nv_crtc->base.dev; 520 520 struct drm_nouveau_private *dev_priv = dev->dev_private; 521 521 struct nouveau_channel *evo = nv50_display(dev)->master; 522 - struct drm_framebuffer *drm_fb = nv_crtc->base.fb; 523 - struct nouveau_framebuffer *fb = nouveau_framebuffer(drm_fb); 522 + struct drm_framebuffer *drm_fb; 523 + struct nouveau_framebuffer *fb; 524 524 int ret; 525 525 526 526 NV_DEBUG_KMS(dev, "index %d\n", nv_crtc->index); 527 + 528 + /* no fb bound */ 529 + if (!atomic && !crtc->fb) { 530 + NV_DEBUG_KMS(dev, "No FB bound\n"); 531 + return 0; 532 + } 527 533 528 534 /* If atomic, we want to switch to the fb we were passed, so 529 535 * now we update pointers to do that. (We don't pin; just ··· 539 533 drm_fb = passed_fb; 540 534 fb = nouveau_framebuffer(passed_fb); 541 535 } else { 536 + drm_fb = crtc->fb; 537 + fb = nouveau_framebuffer(crtc->fb); 542 538 /* If not atomic, we can go ahead and pin, and unpin the 543 539 * old fb we were passed. 544 540 */
+24 -13
drivers/gpu/drm/radeon/radeon_connectors.c
··· 1297 1297 if (!radeon_dig_connector->edp_on) 1298 1298 atombios_set_edp_panel_power(connector, 1299 1299 ATOM_TRANSMITTER_ACTION_POWER_OFF); 1300 - } else { 1301 - /* need to setup ddc on the bridge */ 1302 - if (radeon_connector_encoder_is_dp_bridge(connector)) { 1300 + } else if (radeon_connector_encoder_is_dp_bridge(connector)) { 1301 + /* DP bridges are always DP */ 1302 + radeon_dig_connector->dp_sink_type = CONNECTOR_OBJECT_ID_DISPLAYPORT; 1303 + /* get the DPCD from the bridge */ 1304 + radeon_dp_getdpcd(radeon_connector); 1305 + 1306 + if (radeon_hpd_sense(rdev, radeon_connector->hpd.hpd)) 1307 + ret = connector_status_connected; 1308 + else { 1309 + /* need to setup ddc on the bridge */ 1303 1310 if (encoder) 1304 1311 radeon_atom_ext_encoder_setup_ddc(encoder); 1312 + if (radeon_ddc_probe(radeon_connector, 1313 + radeon_connector->requires_extended_probe)) 1314 + ret = connector_status_connected; 1305 1315 } 1316 + 1317 + if ((ret == connector_status_disconnected) && 1318 + radeon_connector->dac_load_detect) { 1319 + struct drm_encoder *encoder = radeon_best_single_encoder(connector); 1320 + struct drm_encoder_helper_funcs *encoder_funcs; 1321 + if (encoder) { 1322 + encoder_funcs = encoder->helper_private; 1323 + ret = encoder_funcs->detect(encoder, connector); 1324 + } 1325 + } 1326 + } else { 1306 1327 radeon_dig_connector->dp_sink_type = radeon_dp_getsinktype(radeon_connector); 1307 1328 if (radeon_hpd_sense(rdev, radeon_connector->hpd.hpd)) { 1308 1329 ret = connector_status_connected; ··· 1337 1316 if (radeon_ddc_probe(radeon_connector, 1338 1317 radeon_connector->requires_extended_probe)) 1339 1318 ret = connector_status_connected; 1340 - } 1341 - } 1342 - 1343 - if ((ret == connector_status_disconnected) && 1344 - radeon_connector->dac_load_detect) { 1345 - struct drm_encoder *encoder = radeon_best_single_encoder(connector); 1346 - struct drm_encoder_helper_funcs *encoder_funcs; 1347 - if (encoder) { 1348 - encoder_funcs = encoder->helper_private; 1349 - ret = encoder_funcs->detect(encoder, connector); 1350 1319 } 1351 1320 } 1352 1321 }
+12 -7
drivers/gpu/drm/radeon/radeon_display.c
··· 707 707 radeon_router_select_ddc_port(radeon_connector); 708 708 709 709 if ((radeon_connector->base.connector_type == DRM_MODE_CONNECTOR_DisplayPort) || 710 - (radeon_connector->base.connector_type == DRM_MODE_CONNECTOR_eDP)) { 710 + (radeon_connector->base.connector_type == DRM_MODE_CONNECTOR_eDP) || 711 + radeon_connector_encoder_is_dp_bridge(&radeon_connector->base)) { 711 712 struct radeon_connector_atom_dig *dig = radeon_connector->con_priv; 713 + 712 714 if ((dig->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT || 713 715 dig->dp_sink_type == CONNECTOR_OBJECT_ID_eDP) && dig->dp_i2c_bus) 714 - radeon_connector->edid = drm_get_edid(&radeon_connector->base, &dig->dp_i2c_bus->adapter); 715 - } 716 - if (!radeon_connector->ddc_bus) 717 - return -1; 718 - if (!radeon_connector->edid) { 719 - radeon_connector->edid = drm_get_edid(&radeon_connector->base, &radeon_connector->ddc_bus->adapter); 716 + radeon_connector->edid = drm_get_edid(&radeon_connector->base, 717 + &dig->dp_i2c_bus->adapter); 718 + else if (radeon_connector->ddc_bus && !radeon_connector->edid) 719 + radeon_connector->edid = drm_get_edid(&radeon_connector->base, 720 + &radeon_connector->ddc_bus->adapter); 721 + } else { 722 + if (radeon_connector->ddc_bus && !radeon_connector->edid) 723 + radeon_connector->edid = drm_get_edid(&radeon_connector->base, 724 + &radeon_connector->ddc_bus->adapter); 720 725 } 721 726 722 727 if (!radeon_connector->edid) {
+4 -22
drivers/media/dvb/dvb-usb/vp7045.c
··· 224 224 static int vp7045_usb_probe(struct usb_interface *intf, 225 225 const struct usb_device_id *id) 226 226 { 227 - struct dvb_usb_device *d; 228 - int ret = dvb_usb_device_init(intf, &vp7045_properties, 229 - THIS_MODULE, &d, adapter_nr); 230 - if (ret) 231 - return ret; 232 - 233 - d->priv = kmalloc(20, GFP_KERNEL); 234 - if (!d->priv) { 235 - dvb_usb_device_exit(intf); 236 - return -ENOMEM; 237 - } 238 - 239 - return ret; 240 - } 241 - 242 - static void vp7045_usb_disconnect(struct usb_interface *intf) 243 - { 244 - struct dvb_usb_device *d = usb_get_intfdata(intf); 245 - kfree(d->priv); 246 - dvb_usb_device_exit(intf); 227 + return dvb_usb_device_init(intf, &vp7045_properties, 228 + THIS_MODULE, NULL, adapter_nr); 247 229 } 248 230 249 231 static struct usb_device_id vp7045_usb_table [] = { ··· 240 258 static struct dvb_usb_device_properties vp7045_properties = { 241 259 .usb_ctrl = CYPRESS_FX2, 242 260 .firmware = "dvb-usb-vp7045-01.fw", 243 - .size_of_priv = sizeof(u8 *), 261 + .size_of_priv = 20, 244 262 245 263 .num_adapters = 1, 246 264 .adapter = { ··· 287 305 static struct usb_driver vp7045_usb_driver = { 288 306 .name = "dvb_usb_vp7045", 289 307 .probe = vp7045_usb_probe, 290 - .disconnect = vp7045_usb_disconnect, 308 + .disconnect = dvb_usb_device_exit, 291 309 .id_table = vp7045_usb_table, 292 310 }; 293 311
+8 -37
drivers/media/rc/nuvoton-cir.c
··· 618 618 static void nvt_process_rx_ir_data(struct nvt_dev *nvt) 619 619 { 620 620 DEFINE_IR_RAW_EVENT(rawir); 621 - unsigned int count; 622 621 u32 carrier; 623 622 u8 sample; 624 623 int i; ··· 630 631 if (nvt->carrier_detect_enabled) 631 632 carrier = nvt_rx_carrier_detect(nvt); 632 633 633 - count = nvt->pkts; 634 - nvt_dbg_verbose("Processing buffer of len %d", count); 634 + nvt_dbg_verbose("Processing buffer of len %d", nvt->pkts); 635 635 636 636 init_ir_raw_event(&rawir); 637 637 638 - for (i = 0; i < count; i++) { 639 - nvt->pkts--; 638 + for (i = 0; i < nvt->pkts; i++) { 640 639 sample = nvt->buf[i]; 641 640 642 641 rawir.pulse = ((sample & BUF_PULSE_BIT) != 0); 643 642 rawir.duration = US_TO_NS((sample & BUF_LEN_MASK) 644 643 * SAMPLE_PERIOD); 645 644 646 - if ((sample & BUF_LEN_MASK) == BUF_LEN_MASK) { 647 - if (nvt->rawir.pulse == rawir.pulse) 648 - nvt->rawir.duration += rawir.duration; 649 - else { 650 - nvt->rawir.duration = rawir.duration; 651 - nvt->rawir.pulse = rawir.pulse; 652 - } 653 - continue; 654 - } 645 + nvt_dbg("Storing %s with duration %d", 646 + rawir.pulse ? "pulse" : "space", rawir.duration); 655 647 656 - rawir.duration += nvt->rawir.duration; 657 - 658 - init_ir_raw_event(&nvt->rawir); 659 - nvt->rawir.duration = 0; 660 - nvt->rawir.pulse = rawir.pulse; 661 - 662 - if (sample == BUF_PULSE_BIT) 663 - rawir.pulse = false; 664 - 665 - if (rawir.duration) { 666 - nvt_dbg("Storing %s with duration %d", 667 - rawir.pulse ? "pulse" : "space", 668 - rawir.duration); 669 - 670 - ir_raw_event_store_with_filter(nvt->rdev, &rawir); 671 - } 648 + ir_raw_event_store_with_filter(nvt->rdev, &rawir); 672 649 673 650 /* 674 651 * BUF_PULSE_BIT indicates end of IR data, BUF_REPEAT_BYTE 675 652 * indicates end of IR signal, but new data incoming. In both 676 653 * cases, it means we're ready to call ir_raw_event_handle 677 654 */ 678 - if ((sample == BUF_PULSE_BIT) && nvt->pkts) { 655 + if ((sample == BUF_PULSE_BIT) && (i + 1 < nvt->pkts)) { 679 656 nvt_dbg("Calling ir_raw_event_handle (signal end)\n"); 680 657 ir_raw_event_handle(nvt->rdev); 681 658 } 682 659 } 683 660 661 + nvt->pkts = 0; 662 + 684 663 nvt_dbg("Calling ir_raw_event_handle (buffer empty)\n"); 685 664 ir_raw_event_handle(nvt->rdev); 686 - 687 - if (nvt->pkts) { 688 - nvt_dbg("Odd, pkts should be 0 now... (its %u)", nvt->pkts); 689 - nvt->pkts = 0; 690 - } 691 665 692 666 nvt_dbg_verbose("%s done", __func__); 693 667 } ··· 1020 1048 1021 1049 spin_lock_init(&nvt->nvt_lock); 1022 1050 spin_lock_init(&nvt->tx.lock); 1023 - init_ir_raw_event(&nvt->rawir); 1024 1051 1025 1052 ret = -EBUSY; 1026 1053 /* now claim resources */
-1
drivers/media/rc/nuvoton-cir.h
··· 67 67 struct nvt_dev { 68 68 struct pnp_dev *pdev; 69 69 struct rc_dev *rdev; 70 - struct ir_raw_event rawir; 71 70 72 71 spinlock_t nvt_lock; 73 72
+10 -12
drivers/media/video/gspca/ov519.c
··· 2858 2858 case 0x60: 2859 2859 PDEBUG(D_PROBE, "Sensor is a OV7660"); 2860 2860 sd->sensor = SEN_OV7660; 2861 - sd->invert_led = 0; 2862 2861 break; 2863 2862 default: 2864 2863 PDEBUG(D_PROBE, "Unknown sensor: 0x76%x", low); ··· 3336 3337 case BRIDGE_OV519: 3337 3338 cam->cam_mode = ov519_vga_mode; 3338 3339 cam->nmodes = ARRAY_SIZE(ov519_vga_mode); 3339 - sd->invert_led = !sd->invert_led; 3340 3340 break; 3341 3341 case BRIDGE_OVFX2: 3342 3342 cam->cam_mode = ov519_vga_mode; ··· 5003 5005 /* -- module initialisation -- */ 5004 5006 static const struct usb_device_id device_table[] = { 5005 5007 {USB_DEVICE(0x041e, 0x4003), .driver_info = BRIDGE_W9968CF }, 5006 - {USB_DEVICE(0x041e, 0x4052), .driver_info = BRIDGE_OV519 }, 5007 - {USB_DEVICE(0x041e, 0x405f), 5008 + {USB_DEVICE(0x041e, 0x4052), 5008 5009 .driver_info = BRIDGE_OV519 | BRIDGE_INVERT_LED }, 5010 + {USB_DEVICE(0x041e, 0x405f), .driver_info = BRIDGE_OV519 }, 5009 5011 {USB_DEVICE(0x041e, 0x4060), .driver_info = BRIDGE_OV519 }, 5010 5012 {USB_DEVICE(0x041e, 0x4061), .driver_info = BRIDGE_OV519 }, 5011 - {USB_DEVICE(0x041e, 0x4064), 5012 - .driver_info = BRIDGE_OV519 | BRIDGE_INVERT_LED }, 5013 + {USB_DEVICE(0x041e, 0x4064), .driver_info = BRIDGE_OV519 }, 5013 5014 {USB_DEVICE(0x041e, 0x4067), .driver_info = BRIDGE_OV519 }, 5014 - {USB_DEVICE(0x041e, 0x4068), 5015 + {USB_DEVICE(0x041e, 0x4068), .driver_info = BRIDGE_OV519 }, 5016 + {USB_DEVICE(0x045e, 0x028c), 5015 5017 .driver_info = BRIDGE_OV519 | BRIDGE_INVERT_LED }, 5016 - {USB_DEVICE(0x045e, 0x028c), .driver_info = BRIDGE_OV519 }, 5017 5018 {USB_DEVICE(0x054c, 0x0154), .driver_info = BRIDGE_OV519 }, 5018 - {USB_DEVICE(0x054c, 0x0155), 5019 - .driver_info = BRIDGE_OV519 | BRIDGE_INVERT_LED }, 5019 + {USB_DEVICE(0x054c, 0x0155), .driver_info = BRIDGE_OV519 }, 5020 5020 {USB_DEVICE(0x05a9, 0x0511), .driver_info = BRIDGE_OV511 }, 5021 5021 {USB_DEVICE(0x05a9, 0x0518), .driver_info = BRIDGE_OV518 }, 5022 - {USB_DEVICE(0x05a9, 0x0519), .driver_info = BRIDGE_OV519 }, 5023 - {USB_DEVICE(0x05a9, 0x0530), .driver_info = BRIDGE_OV519 }, 5022 + {USB_DEVICE(0x05a9, 0x0519), 5023 + .driver_info = BRIDGE_OV519 | BRIDGE_INVERT_LED }, 5024 + {USB_DEVICE(0x05a9, 0x0530), 5025 + .driver_info = BRIDGE_OV519 | BRIDGE_INVERT_LED }, 5024 5026 {USB_DEVICE(0x05a9, 0x2800), .driver_info = BRIDGE_OVFX2 }, 5025 5027 {USB_DEVICE(0x05a9, 0x4519), .driver_info = BRIDGE_OV519 }, 5026 5028 {USB_DEVICE(0x05a9, 0x8519), .driver_info = BRIDGE_OV519 },
+5 -1
drivers/media/video/gspca/sonixj.c
··· 2386 2386 reg_w1(gspca_dev, 0x01, 0x22); 2387 2387 msleep(100); 2388 2388 reg01 = SCL_SEL_OD | S_PDN_INV; 2389 - reg17 &= MCK_SIZE_MASK; 2389 + reg17 &= ~MCK_SIZE_MASK; 2390 2390 reg17 |= 0x04; /* clock / 4 */ 2391 2391 break; 2392 2392 } ··· 2532 2532 if (!mode) { /* if 640x480 */ 2533 2533 reg17 &= ~MCK_SIZE_MASK; 2534 2534 reg17 |= 0x04; /* clock / 4 */ 2535 + } else { 2536 + reg01 &= ~SYS_SEL_48M; /* clk 24Mz */ 2537 + reg17 &= ~MCK_SIZE_MASK; 2538 + reg17 |= 0x02; /* clock / 2 */ 2535 2539 } 2536 2540 break; 2537 2541 case SENSOR_OV7630:
+1 -1
drivers/media/video/pwc/pwc-v4l.c
··· 338 338 if (pdev->restore_factory) 339 339 pdev->restore_factory->flags = V4L2_CTRL_FLAG_UPDATE; 340 340 341 - if (!pdev->features & FEATURE_MOTOR_PANTILT) 341 + if (!(pdev->features & FEATURE_MOTOR_PANTILT)) 342 342 return hdl->error; 343 343 344 344 /* Motor pan / tilt / reset */
+2
drivers/media/video/via-camera.c
··· 1332 1332 struct pci_bus *pbus = pci_find_bus(0, 0); 1333 1333 u8 cbyte; 1334 1334 1335 + if (!pbus) 1336 + return false; 1335 1337 pci_bus_read_config_byte(pbus, VIACAM_SERIAL_DEVFN, 1336 1338 VIACAM_SERIAL_CREG, &cbyte); 1337 1339 if ((cbyte & VIACAM_SERIAL_BIT) == 0)
+1 -1
drivers/scsi/qla4xxx/Kconfig
··· 1 1 config SCSI_QLA_ISCSI 2 2 tristate "QLogic ISP4XXX and ISP82XX host adapter family support" 3 - depends on PCI && SCSI 3 + depends on PCI && SCSI && NET 4 4 select SCSI_ISCSI_ATTRS 5 5 ---help--- 6 6 This driver supports the QLogic 40xx (ISP4XXX) and 8022 (ISP82XX)
+5 -1
fs/btrfs/btrfs_inode.h
··· 176 176 { 177 177 u64 ino = BTRFS_I(inode)->location.objectid; 178 178 179 - if (ino <= BTRFS_FIRST_FREE_OBJECTID) 179 + /* 180 + * !ino: btree_inode 181 + * type == BTRFS_ROOT_ITEM_KEY: subvol dir 182 + */ 183 + if (!ino || BTRFS_I(inode)->location.type == BTRFS_ROOT_ITEM_KEY) 180 184 ino = inode->i_ino; 181 185 return ino; 182 186 }
+3 -1
fs/btrfs/file-item.c
··· 183 183 * read from the commit root and sidestep a nasty deadlock 184 184 * between reading the free space cache and updating the csum tree. 185 185 */ 186 - if (btrfs_is_free_space_inode(root, inode)) 186 + if (btrfs_is_free_space_inode(root, inode)) { 187 187 path->search_commit_root = 1; 188 + path->skip_locking = 1; 189 + } 188 190 189 191 disk_bytenr = (u64)bio->bi_sector << 9; 190 192 if (dio)
+10 -6
fs/btrfs/file.c
··· 1075 1075 start_pos = pos & ~((u64)root->sectorsize - 1); 1076 1076 last_pos = ((u64)index + num_pages) << PAGE_CACHE_SHIFT; 1077 1077 1078 - if (start_pos > inode->i_size) { 1079 - err = btrfs_cont_expand(inode, i_size_read(inode), start_pos); 1080 - if (err) 1081 - return err; 1082 - } 1083 - 1084 1078 again: 1085 1079 for (i = 0; i < num_pages; i++) { 1086 1080 pages[i] = find_or_create_page(inode->i_mapping, index + i, ··· 1332 1338 struct inode *inode = fdentry(file)->d_inode; 1333 1339 struct btrfs_root *root = BTRFS_I(inode)->root; 1334 1340 loff_t *ppos = &iocb->ki_pos; 1341 + u64 start_pos; 1335 1342 ssize_t num_written = 0; 1336 1343 ssize_t err = 0; 1337 1344 size_t count, ocount; ··· 1380 1385 1381 1386 file_update_time(file); 1382 1387 BTRFS_I(inode)->sequence++; 1388 + 1389 + start_pos = round_down(pos, root->sectorsize); 1390 + if (start_pos > i_size_read(inode)) { 1391 + err = btrfs_cont_expand(inode, i_size_read(inode), start_pos); 1392 + if (err) { 1393 + mutex_unlock(&inode->i_mutex); 1394 + goto out; 1395 + } 1396 + } 1383 1397 1384 1398 if (unlikely(file->f_flags & O_DIRECT)) { 1385 1399 num_written = __btrfs_direct_write(iocb, iov, nr_segs,
+4
fs/btrfs/free-space-cache.c
··· 190 190 struct btrfs_path *path, 191 191 struct inode *inode) 192 192 { 193 + struct btrfs_block_rsv *rsv; 193 194 loff_t oldsize; 194 195 int ret = 0; 195 196 197 + rsv = trans->block_rsv; 196 198 trans->block_rsv = root->orphan_block_rsv; 197 199 ret = btrfs_block_rsv_check(trans, root, 198 200 root->orphan_block_rsv, ··· 212 210 */ 213 211 ret = btrfs_truncate_inode_items(trans, root, inode, 214 212 0, BTRFS_EXTENT_DATA_KEY); 213 + 214 + trans->block_rsv = rsv; 215 215 if (ret) { 216 216 WARN_ON(1); 217 217 return ret;
+11 -11
fs/btrfs/inode.c
··· 1786 1786 &ordered_extent->list); 1787 1787 1788 1788 ret = btrfs_ordered_update_i_size(inode, 0, ordered_extent); 1789 - if (!ret) { 1789 + if (!ret || !test_bit(BTRFS_ORDERED_PREALLOC, &ordered_extent->flags)) { 1790 1790 ret = btrfs_update_inode(trans, root, inode); 1791 1791 BUG_ON(ret); 1792 1792 } ··· 3510 3510 err = btrfs_drop_extents(trans, inode, cur_offset, 3511 3511 cur_offset + hole_size, 3512 3512 &hint_byte, 1); 3513 - if (err) 3513 + if (err) { 3514 + btrfs_end_transaction(trans, root); 3514 3515 break; 3516 + } 3515 3517 3516 3518 err = btrfs_insert_file_extent(trans, root, 3517 3519 btrfs_ino(inode), cur_offset, 0, 3518 3520 0, hole_size, 0, hole_size, 3519 3521 0, 0, 0); 3520 - if (err) 3522 + if (err) { 3523 + btrfs_end_transaction(trans, root); 3521 3524 break; 3525 + } 3522 3526 3523 3527 btrfs_drop_extent_cache(inode, hole_start, 3524 3528 last_byte - 1, 0); ··· 3956 3952 struct btrfs_root *root, int *new) 3957 3953 { 3958 3954 struct inode *inode; 3959 - int bad_inode = 0; 3960 3955 3961 3956 inode = btrfs_iget_locked(s, location->objectid, root); 3962 3957 if (!inode) ··· 3971 3968 if (new) 3972 3969 *new = 1; 3973 3970 } else { 3974 - bad_inode = 1; 3971 + unlock_new_inode(inode); 3972 + iput(inode); 3973 + inode = ERR_PTR(-ESTALE); 3975 3974 } 3976 - } 3977 - 3978 - if (bad_inode) { 3979 - iput(inode); 3980 - inode = ERR_PTR(-ESTALE); 3981 3975 } 3982 3976 3983 3977 return inode; ··· 5823 5823 5824 5824 add_pending_csums(trans, inode, ordered->file_offset, &ordered->list); 5825 5825 ret = btrfs_ordered_update_i_size(inode, 0, ordered); 5826 - if (!ret) 5826 + if (!ret || !test_bit(BTRFS_ORDERED_PREALLOC, &ordered->flags)) 5827 5827 btrfs_update_inode(trans, root, inode); 5828 5828 ret = 0; 5829 5829 out_unlock:
+16 -3
fs/btrfs/ioctl.c
··· 2220 2220 !IS_ALIGNED(destoff, bs)) 2221 2221 goto out_unlock; 2222 2222 2223 + if (destoff > inode->i_size) { 2224 + ret = btrfs_cont_expand(inode, inode->i_size, destoff); 2225 + if (ret) 2226 + goto out_unlock; 2227 + } 2228 + 2223 2229 /* do any pending delalloc/csum calc on src, one way or 2224 2230 another, and lock file content */ 2225 2231 while (1) { ··· 2331 2325 2332 2326 if (type == BTRFS_FILE_EXTENT_REG || 2333 2327 type == BTRFS_FILE_EXTENT_PREALLOC) { 2328 + /* 2329 + * a | --- range to clone ---| b 2330 + * | ------------- extent ------------- | 2331 + */ 2332 + 2333 + /* substract range b */ 2334 + if (key.offset + datal > off + len) 2335 + datal = off + len - key.offset; 2336 + 2337 + /* substract range a */ 2334 2338 if (off > key.offset) { 2335 2339 datao += off - key.offset; 2336 2340 datal -= off - key.offset; 2337 2341 } 2338 - 2339 - if (key.offset + datal > off + len) 2340 - datal = off + len - key.offset; 2341 2342 2342 2343 ret = btrfs_drop_extents(trans, inode, 2343 2344 new_key.offset,
+4
fs/btrfs/transaction.c
··· 884 884 struct btrfs_root *tree_root = fs_info->tree_root; 885 885 struct btrfs_root *root = pending->root; 886 886 struct btrfs_root *parent_root; 887 + struct btrfs_block_rsv *rsv; 887 888 struct inode *parent_inode; 888 889 struct dentry *parent; 889 890 struct dentry *dentry; ··· 895 894 u64 index = 0; 896 895 u64 objectid; 897 896 u64 root_flags; 897 + 898 + rsv = trans->block_rsv; 898 899 899 900 new_root_item = kmalloc(sizeof(*new_root_item), GFP_NOFS); 900 901 if (!new_root_item) { ··· 1005 1002 btrfs_orphan_post_snapshot(trans, pending); 1006 1003 fail: 1007 1004 kfree(new_root_item); 1005 + trans->block_rsv = rsv; 1008 1006 btrfs_block_rsv_release(root, &pending->block_rsv, (u64)-1); 1009 1007 return 0; 1010 1008 }
+9
fs/btrfs/xattr.c
··· 116 116 if (ret) 117 117 goto out; 118 118 btrfs_release_path(path); 119 + 120 + /* 121 + * remove the attribute 122 + */ 123 + if (!value) 124 + goto out; 119 125 } 120 126 121 127 again: ··· 164 158 return ret; 165 159 } 166 160 161 + /* 162 + * @value: "" makes the attribute to empty, NULL removes it 163 + */ 167 164 int __btrfs_setxattr(struct btrfs_trans_handle *trans, 168 165 struct inode *inode, const char *name, 169 166 const void *value, size_t size, int flags)
+8 -4
fs/fuse/dev.c
··· 258 258 forget->forget_one.nlookup = nlookup; 259 259 260 260 spin_lock(&fc->lock); 261 - fc->forget_list_tail->next = forget; 262 - fc->forget_list_tail = forget; 263 - wake_up(&fc->waitq); 264 - kill_fasync(&fc->fasync, SIGIO, POLL_IN); 261 + if (fc->connected) { 262 + fc->forget_list_tail->next = forget; 263 + fc->forget_list_tail = forget; 264 + wake_up(&fc->waitq); 265 + kill_fasync(&fc->fasync, SIGIO, POLL_IN); 266 + } else { 267 + kfree(forget); 268 + } 265 269 spin_unlock(&fc->lock); 266 270 } 267 271
+3
fs/fuse/inode.c
··· 812 812 if (arg->minor >= 17) { 813 813 if (!(arg->flags & FUSE_FLOCK_LOCKS)) 814 814 fc->no_flock = 1; 815 + } else { 816 + if (!(arg->flags & FUSE_POSIX_LOCKS)) 817 + fc->no_flock = 1; 815 818 } 816 819 if (arg->flags & FUSE_ATOMIC_O_TRUNC) 817 820 fc->atomic_o_trunc = 1;