1 |
Author: mpagano |
2 |
Date: 2014-01-29 14:10:29 +0000 (Wed, 29 Jan 2014) |
3 |
New Revision: 2657 |
4 |
|
5 |
Added: |
6 |
genpatches-2.6/trunk/3.13/1000_linux-3.13.1.patch |
7 |
Modified: |
8 |
genpatches-2.6/trunk/3.13/0000_README |
9 |
Log: |
10 |
Linux patch 3.13.1 |
11 |
|
12 |
Modified: genpatches-2.6/trunk/3.13/0000_README |
13 |
=================================================================== |
14 |
--- genpatches-2.6/trunk/3.13/0000_README 2014-01-27 12:59:00 UTC (rev 2656) |
15 |
+++ genpatches-2.6/trunk/3.13/0000_README 2014-01-29 14:10:29 UTC (rev 2657) |
16 |
@@ -42,6 +42,10 @@ |
17 |
|
18 |
Individual Patch Descriptions: |
19 |
-------------------------------------------------------------------------- |
20 |
+Patch: 1000_linux-3.13.1.patch |
21 |
+From: http://www.kernel.org |
22 |
+Desc: Linux 3.13.1 |
23 |
+ |
24 |
Patch: 1500_XATTR_USER_PREFIX.patch |
25 |
From: https://bugs.gentoo.org/show_bug.cgi?id=470644 |
26 |
Desc: Support for namespace user.pax.* on tmpfs. |
27 |
|
28 |
Added: genpatches-2.6/trunk/3.13/1000_linux-3.13.1.patch |
29 |
=================================================================== |
30 |
--- genpatches-2.6/trunk/3.13/1000_linux-3.13.1.patch (rev 0) |
31 |
+++ genpatches-2.6/trunk/3.13/1000_linux-3.13.1.patch 2014-01-29 14:10:29 UTC (rev 2657) |
32 |
@@ -0,0 +1,253 @@ |
33 |
+diff --git a/Makefile b/Makefile |
34 |
+index b8b7f74696b4..de4cda986be2 100644 |
35 |
+--- a/Makefile |
36 |
++++ b/Makefile |
37 |
+@@ -1,6 +1,6 @@ |
38 |
+ VERSION = 3 |
39 |
+ PATCHLEVEL = 13 |
40 |
+-SUBLEVEL = 0 |
41 |
++SUBLEVEL = 1 |
42 |
+ EXTRAVERSION = |
43 |
+ NAME = One Giant Leap for Frogkind |
44 |
+ |
45 |
+diff --git a/drivers/extcon/extcon-gpio.c b/drivers/extcon/extcon-gpio.c |
46 |
+index 7e0dff58e494..4736a9c57efa 100644 |
47 |
+--- a/drivers/extcon/extcon-gpio.c |
48 |
++++ b/drivers/extcon/extcon-gpio.c |
49 |
+@@ -105,6 +105,12 @@ static int gpio_extcon_probe(struct platform_device *pdev) |
50 |
+ extcon_data->state_off = pdata->state_off; |
51 |
+ if (pdata->state_on && pdata->state_off) |
52 |
+ extcon_data->edev.print_state = extcon_gpio_print_state; |
53 |
++ |
54 |
++ ret = devm_gpio_request_one(&pdev->dev, extcon_data->gpio, GPIOF_DIR_IN, |
55 |
++ pdev->name); |
56 |
++ if (ret < 0) |
57 |
++ return ret; |
58 |
++ |
59 |
+ if (pdata->debounce) { |
60 |
+ ret = gpio_set_debounce(extcon_data->gpio, |
61 |
+ pdata->debounce * 1000); |
62 |
+@@ -117,11 +123,6 @@ static int gpio_extcon_probe(struct platform_device *pdev) |
63 |
+ if (ret < 0) |
64 |
+ return ret; |
65 |
+ |
66 |
+- ret = devm_gpio_request_one(&pdev->dev, extcon_data->gpio, GPIOF_DIR_IN, |
67 |
+- pdev->name); |
68 |
+- if (ret < 0) |
69 |
+- goto err; |
70 |
+- |
71 |
+ INIT_DELAYED_WORK(&extcon_data->work, gpio_extcon_work); |
72 |
+ |
73 |
+ extcon_data->irq = gpio_to_irq(extcon_data->gpio); |
74 |
+diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c |
75 |
+index cbb15716a5db..03f82ab87d9e 100644 |
76 |
+--- a/drivers/md/raid5.c |
77 |
++++ b/drivers/md/raid5.c |
78 |
+@@ -675,8 +675,10 @@ get_active_stripe(struct r5conf *conf, sector_t sector, |
79 |
+ || !conf->inactive_blocked), |
80 |
+ *(conf->hash_locks + hash)); |
81 |
+ conf->inactive_blocked = 0; |
82 |
+- } else |
83 |
++ } else { |
84 |
+ init_stripe(sh, sector, previous); |
85 |
++ atomic_inc(&sh->count); |
86 |
++ } |
87 |
+ } else { |
88 |
+ spin_lock(&conf->device_lock); |
89 |
+ if (atomic_read(&sh->count)) { |
90 |
+@@ -695,13 +697,11 @@ get_active_stripe(struct r5conf *conf, sector_t sector, |
91 |
+ sh->group = NULL; |
92 |
+ } |
93 |
+ } |
94 |
++ atomic_inc(&sh->count); |
95 |
+ spin_unlock(&conf->device_lock); |
96 |
+ } |
97 |
+ } while (sh == NULL); |
98 |
+ |
99 |
+- if (sh) |
100 |
+- atomic_inc(&sh->count); |
101 |
+- |
102 |
+ spin_unlock_irq(conf->hash_locks + hash); |
103 |
+ return sh; |
104 |
+ } |
105 |
+@@ -2111,6 +2111,7 @@ static void raid5_end_write_request(struct bio *bi, int error) |
106 |
+ set_bit(R5_MadeGoodRepl, &sh->dev[i].flags); |
107 |
+ } else { |
108 |
+ if (!uptodate) { |
109 |
++ set_bit(STRIPE_DEGRADED, &sh->state); |
110 |
+ set_bit(WriteErrorSeen, &rdev->flags); |
111 |
+ set_bit(R5_WriteError, &sh->dev[i].flags); |
112 |
+ if (!test_and_set_bit(WantReplacement, &rdev->flags)) |
113 |
+diff --git a/drivers/staging/comedi/comedi_fops.c b/drivers/staging/comedi/comedi_fops.c |
114 |
+index f3d59e2a1152..341decfb81d1 100644 |
115 |
+--- a/drivers/staging/comedi/comedi_fops.c |
116 |
++++ b/drivers/staging/comedi/comedi_fops.c |
117 |
+@@ -1425,6 +1425,7 @@ static int do_cmd_ioctl(struct comedi_device *dev, |
118 |
+ async->cmd.chanlist_len * sizeof(int)); |
119 |
+ if (IS_ERR(async->cmd.chanlist)) { |
120 |
+ ret = PTR_ERR(async->cmd.chanlist); |
121 |
++ async->cmd.chanlist = NULL; |
122 |
+ DPRINTK("memdup_user failed with code %d\n", ret); |
123 |
+ goto cleanup; |
124 |
+ } |
125 |
+@@ -1547,6 +1548,7 @@ static int do_cmdtest_ioctl(struct comedi_device *dev, |
126 |
+ cmd.chanlist_len * sizeof(int)); |
127 |
+ if (IS_ERR(chanlist)) { |
128 |
+ ret = PTR_ERR(chanlist); |
129 |
++ chanlist = NULL; |
130 |
+ DPRINTK("memdup_user exited with code %d", ret); |
131 |
+ goto cleanup; |
132 |
+ } |
133 |
+diff --git a/drivers/staging/comedi/drivers/addi_apci_1032.c b/drivers/staging/comedi/drivers/addi_apci_1032.c |
134 |
+index 34ab0679e992..b95a8b3395ae 100644 |
135 |
+--- a/drivers/staging/comedi/drivers/addi_apci_1032.c |
136 |
++++ b/drivers/staging/comedi/drivers/addi_apci_1032.c |
137 |
+@@ -325,8 +325,8 @@ static int apci1032_auto_attach(struct comedi_device *dev, |
138 |
+ s = &dev->subdevices[1]; |
139 |
+ if (dev->irq) { |
140 |
+ dev->read_subdev = s; |
141 |
+- s->type = COMEDI_SUBD_DI | SDF_CMD_READ; |
142 |
+- s->subdev_flags = SDF_READABLE; |
143 |
++ s->type = COMEDI_SUBD_DI; |
144 |
++ s->subdev_flags = SDF_READABLE | SDF_CMD_READ; |
145 |
+ s->n_chan = 1; |
146 |
+ s->maxdata = 1; |
147 |
+ s->range_table = &range_digital; |
148 |
+diff --git a/drivers/staging/comedi/drivers/adl_pci9111.c b/drivers/staging/comedi/drivers/adl_pci9111.c |
149 |
+index eab8da2c3d66..a270a86a45ba 100644 |
150 |
+--- a/drivers/staging/comedi/drivers/adl_pci9111.c |
151 |
++++ b/drivers/staging/comedi/drivers/adl_pci9111.c |
152 |
+@@ -859,7 +859,7 @@ static int pci9111_auto_attach(struct comedi_device *dev, |
153 |
+ pci9111_reset(dev); |
154 |
+ |
155 |
+ if (pcidev->irq > 0) { |
156 |
+- ret = request_irq(dev->irq, pci9111_interrupt, |
157 |
++ ret = request_irq(pcidev->irq, pci9111_interrupt, |
158 |
+ IRQF_SHARED, dev->board_name, dev); |
159 |
+ if (ret) |
160 |
+ return ret; |
161 |
+diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c |
162 |
+index 7203864992a5..a0dfb86f9880 100644 |
163 |
+--- a/drivers/tty/serial/amba-pl011.c |
164 |
++++ b/drivers/tty/serial/amba-pl011.c |
165 |
+@@ -1537,6 +1537,8 @@ static int pl011_startup(struct uart_port *port) |
166 |
+ /* |
167 |
+ * Provoke TX FIFO interrupt into asserting. |
168 |
+ */ |
169 |
++ spin_lock_irq(&uap->port.lock); |
170 |
++ |
171 |
+ cr = UART01x_CR_UARTEN | UART011_CR_TXE | UART011_CR_LBE; |
172 |
+ writew(cr, uap->port.membase + UART011_CR); |
173 |
+ writew(0, uap->port.membase + UART011_FBRD); |
174 |
+@@ -1561,6 +1563,8 @@ static int pl011_startup(struct uart_port *port) |
175 |
+ cr |= UART01x_CR_UARTEN | UART011_CR_RXE | UART011_CR_TXE; |
176 |
+ writew(cr, uap->port.membase + UART011_CR); |
177 |
+ |
178 |
++ spin_unlock_irq(&uap->port.lock); |
179 |
++ |
180 |
+ /* |
181 |
+ * initialise the old status of the modem signals |
182 |
+ */ |
183 |
+@@ -1629,11 +1633,13 @@ static void pl011_shutdown(struct uart_port *port) |
184 |
+ * it during startup(). |
185 |
+ */ |
186 |
+ uap->autorts = false; |
187 |
++ spin_lock_irq(&uap->port.lock); |
188 |
+ cr = readw(uap->port.membase + UART011_CR); |
189 |
+ uap->old_cr = cr; |
190 |
+ cr &= UART011_CR_RTS | UART011_CR_DTR; |
191 |
+ cr |= UART01x_CR_UARTEN | UART011_CR_TXE; |
192 |
+ writew(cr, uap->port.membase + UART011_CR); |
193 |
++ spin_unlock_irq(&uap->port.lock); |
194 |
+ |
195 |
+ /* |
196 |
+ * disable break condition and fifos |
197 |
+diff --git a/fs/gfs2/inode.c b/fs/gfs2/inode.c |
198 |
+index 7119504159f1..87bc2290a400 100644 |
199 |
+--- a/fs/gfs2/inode.c |
200 |
++++ b/fs/gfs2/inode.c |
201 |
+@@ -1607,10 +1607,22 @@ static int setattr_chown(struct inode *inode, struct iattr *attr) |
202 |
+ if (!(attr->ia_valid & ATTR_GID) || gid_eq(ogid, ngid)) |
203 |
+ ogid = ngid = NO_GID_QUOTA_CHANGE; |
204 |
+ |
205 |
+- error = gfs2_quota_lock(ip, nuid, ngid); |
206 |
++ error = get_write_access(inode); |
207 |
+ if (error) |
208 |
+ return error; |
209 |
+ |
210 |
++ error = gfs2_rs_alloc(ip); |
211 |
++ if (error) |
212 |
++ goto out; |
213 |
++ |
214 |
++ error = gfs2_rindex_update(sdp); |
215 |
++ if (error) |
216 |
++ goto out; |
217 |
++ |
218 |
++ error = gfs2_quota_lock(ip, nuid, ngid); |
219 |
++ if (error) |
220 |
++ goto out; |
221 |
++ |
222 |
+ if (!uid_eq(ouid, NO_UID_QUOTA_CHANGE) || |
223 |
+ !gid_eq(ogid, NO_GID_QUOTA_CHANGE)) { |
224 |
+ error = gfs2_quota_check(ip, nuid, ngid); |
225 |
+@@ -1637,6 +1649,8 @@ out_end_trans: |
226 |
+ gfs2_trans_end(sdp); |
227 |
+ out_gunlock_q: |
228 |
+ gfs2_quota_unlock(ip); |
229 |
++out: |
230 |
++ put_write_access(inode); |
231 |
+ return error; |
232 |
+ } |
233 |
+ |
234 |
+diff --git a/include/linux/mm.h b/include/linux/mm.h |
235 |
+index 35527173cf50..9fac6dd69b11 100644 |
236 |
+--- a/include/linux/mm.h |
237 |
++++ b/include/linux/mm.h |
238 |
+@@ -846,11 +846,14 @@ static __always_inline void *lowmem_page_address(const struct page *page) |
239 |
+ #endif |
240 |
+ |
241 |
+ #if defined(WANT_PAGE_VIRTUAL) |
242 |
+-#define page_address(page) ((page)->virtual) |
243 |
+-#define set_page_address(page, address) \ |
244 |
+- do { \ |
245 |
+- (page)->virtual = (address); \ |
246 |
+- } while(0) |
247 |
++static inline void *page_address(const struct page *page) |
248 |
++{ |
249 |
++ return page->virtual; |
250 |
++} |
251 |
++static inline void set_page_address(struct page *page, void *address) |
252 |
++{ |
253 |
++ page->virtual = address; |
254 |
++} |
255 |
+ #define page_address_init() do { } while(0) |
256 |
+ #endif |
257 |
+ |
258 |
+diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c |
259 |
+index f281c8068557..314b77eb1216 100644 |
260 |
+--- a/sound/pci/hda/patch_hdmi.c |
261 |
++++ b/sound/pci/hda/patch_hdmi.c |
262 |
+@@ -1496,11 +1496,14 @@ static bool hdmi_present_sense(struct hdmi_spec_per_pin *per_pin, int repoll) |
263 |
+ * specification worked this way. Hence, we just ignore the data in |
264 |
+ * the unsolicited response to avoid custom WARs. |
265 |
+ */ |
266 |
+- int present = snd_hda_pin_sense(codec, pin_nid); |
267 |
++ int present; |
268 |
+ bool update_eld = false; |
269 |
+ bool eld_changed = false; |
270 |
+ bool ret; |
271 |
+ |
272 |
++ snd_hda_power_up(codec); |
273 |
++ present = snd_hda_pin_sense(codec, pin_nid); |
274 |
++ |
275 |
+ mutex_lock(&per_pin->lock); |
276 |
+ pin_eld->monitor_present = !!(present & AC_PINSENSE_PRESENCE); |
277 |
+ if (pin_eld->monitor_present) |
278 |
+@@ -1573,6 +1576,7 @@ static bool hdmi_present_sense(struct hdmi_spec_per_pin *per_pin, int repoll) |
279 |
+ jack->block_report = !ret; |
280 |
+ |
281 |
+ mutex_unlock(&per_pin->lock); |
282 |
++ snd_hda_power_down(codec); |
283 |
+ return ret; |
284 |
+ } |
285 |
+ |