Magellan Linux

Annotation of /trunk/kernel-magellan/patches-3.13/0100-3.13.1-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


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