diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-09-14 17:53:51 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-09-14 17:53:51 -0400 |
| commit | f2378e386f2c96ead1ce124cc79115c2b142a46f (patch) | |
| tree | 39ad07862bd7aff99e81d3edd97d573bad9134f2 | |
| parent | 0462bfc88d37ecb7f69488643c91cb657a1f264d (diff) | |
| parent | 94254edc9c5b4e864767c97bfa0e4ccff2ecb5e5 (diff) | |
Merge tag 'staging-3.6-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging
Pull staging tree fixes from Greg Kroah-Hartman:
"Here are a few staging tree fixes for problems that have been
reported.
Nothing major, just a number of tiny driver fixes. All of these have
been in the linux-next tree for a while.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>"
* tag 'staging-3.6-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
drm/omap: add more new timings fields
drm/omap: update for interlaced
staging: r8712u: fix bug in r8712_recv_indicatepkt()
staging: zcache: fix cleancache race condition with shrinker
Staging: Android alarm: IOCTL command encoding fix
staging: vt6656: [BUG] - Failed connection, incorrect endian.
staging: ozwpan: fix memcmp() test in oz_set_active_pd()
staging: wlan-ng: Fix problem with wrong arguments
staging: comedi: das08: Correct AO output for das08jr-16-ao
staging: comedi: das08: Correct AI encoding for das08jr-16-ao
staging: comedi: das08: Fix PCI ref count
staging: comedi: amplc_pci230: Fix PCI ref count
staging: comedi: amplc_pc263: Fix PCI ref count
staging: comedi: amplc_pc236: Fix PCI ref count
staging: comedi: amplc_dio200: Fix PCI ref count
staging: comedi: amplc_pci224: Fix PCI ref count
drivers/iio/adc/at91_adc.c: adjust inconsistent IS_ERR and PTR_ERR
staging iio: fix potential memory leak in lis3l02dq_ring.c
staging:iio: prevent divide by zero bugs
22 files changed, 123 insertions, 47 deletions
diff --git a/drivers/iio/adc/at91_adc.c b/drivers/iio/adc/at91_adc.c index f61780a02374..3bd5540238a7 100644 --- a/drivers/iio/adc/at91_adc.c +++ b/drivers/iio/adc/at91_adc.c | |||
| @@ -617,7 +617,7 @@ static int __devinit at91_adc_probe(struct platform_device *pdev) | |||
| 617 | st->adc_clk = clk_get(&pdev->dev, "adc_op_clk"); | 617 | st->adc_clk = clk_get(&pdev->dev, "adc_op_clk"); |
| 618 | if (IS_ERR(st->adc_clk)) { | 618 | if (IS_ERR(st->adc_clk)) { |
| 619 | dev_err(&pdev->dev, "Failed to get the ADC clock.\n"); | 619 | dev_err(&pdev->dev, "Failed to get the ADC clock.\n"); |
| 620 | ret = PTR_ERR(st->clk); | 620 | ret = PTR_ERR(st->adc_clk); |
| 621 | goto error_disable_clk; | 621 | goto error_disable_clk; |
| 622 | } | 622 | } |
| 623 | 623 | ||
diff --git a/drivers/staging/android/android_alarm.h b/drivers/staging/android/android_alarm.h index d0cafd637199..f2ffd963f1c3 100644 --- a/drivers/staging/android/android_alarm.h +++ b/drivers/staging/android/android_alarm.h | |||
| @@ -51,10 +51,12 @@ enum android_alarm_return_flags { | |||
| 51 | #define ANDROID_ALARM_WAIT _IO('a', 1) | 51 | #define ANDROID_ALARM_WAIT _IO('a', 1) |
| 52 | 52 | ||
| 53 | #define ALARM_IOW(c, type, size) _IOW('a', (c) | ((type) << 4), size) | 53 | #define ALARM_IOW(c, type, size) _IOW('a', (c) | ((type) << 4), size) |
| 54 | #define ALARM_IOR(c, type, size) _IOR('a', (c) | ((type) << 4), size) | ||
| 55 | |||
| 54 | /* Set alarm */ | 56 | /* Set alarm */ |
| 55 | #define ANDROID_ALARM_SET(type) ALARM_IOW(2, type, struct timespec) | 57 | #define ANDROID_ALARM_SET(type) ALARM_IOW(2, type, struct timespec) |
| 56 | #define ANDROID_ALARM_SET_AND_WAIT(type) ALARM_IOW(3, type, struct timespec) | 58 | #define ANDROID_ALARM_SET_AND_WAIT(type) ALARM_IOW(3, type, struct timespec) |
| 57 | #define ANDROID_ALARM_GET_TIME(type) ALARM_IOW(4, type, struct timespec) | 59 | #define ANDROID_ALARM_GET_TIME(type) ALARM_IOR(4, type, struct timespec) |
| 58 | #define ANDROID_ALARM_SET_RTC _IOW('a', 5, struct timespec) | 60 | #define ANDROID_ALARM_SET_RTC _IOW('a', 5, struct timespec) |
| 59 | #define ANDROID_ALARM_BASE_CMD(cmd) (cmd & ~(_IOC(0, 0, 0xf0, 0))) | 61 | #define ANDROID_ALARM_BASE_CMD(cmd) (cmd & ~(_IOC(0, 0, 0xf0, 0))) |
| 60 | #define ANDROID_ALARM_IOCTL_TO_TYPE(cmd) (_IOC_NR(cmd) >> 4) | 62 | #define ANDROID_ALARM_IOCTL_TO_TYPE(cmd) (_IOC_NR(cmd) >> 4) |
diff --git a/drivers/staging/comedi/drivers/amplc_dio200.c b/drivers/staging/comedi/drivers/amplc_dio200.c index 6c81e377262c..cc8931fde839 100644 --- a/drivers/staging/comedi/drivers/amplc_dio200.c +++ b/drivers/staging/comedi/drivers/amplc_dio200.c | |||
| @@ -1412,6 +1412,13 @@ static int __devinit dio200_attach_pci(struct comedi_device *dev, | |||
| 1412 | dev_err(dev->class_dev, "BUG! cannot determine board type!\n"); | 1412 | dev_err(dev->class_dev, "BUG! cannot determine board type!\n"); |
| 1413 | return -EINVAL; | 1413 | return -EINVAL; |
| 1414 | } | 1414 | } |
| 1415 | /* | ||
| 1416 | * Need to 'get' the PCI device to match the 'put' in dio200_detach(). | ||
| 1417 | * TODO: Remove the pci_dev_get() and matching pci_dev_put() once | ||
| 1418 | * support for manual attachment of PCI devices via dio200_attach() | ||
| 1419 | * has been removed. | ||
| 1420 | */ | ||
| 1421 | pci_dev_get(pci_dev); | ||
| 1415 | return dio200_pci_common_attach(dev, pci_dev); | 1422 | return dio200_pci_common_attach(dev, pci_dev); |
| 1416 | } | 1423 | } |
| 1417 | 1424 | ||
diff --git a/drivers/staging/comedi/drivers/amplc_pc236.c b/drivers/staging/comedi/drivers/amplc_pc236.c index aabba9886b7d..f50287903038 100644 --- a/drivers/staging/comedi/drivers/amplc_pc236.c +++ b/drivers/staging/comedi/drivers/amplc_pc236.c | |||
| @@ -565,6 +565,13 @@ static int __devinit pc236_attach_pci(struct comedi_device *dev, | |||
| 565 | dev_err(dev->class_dev, "BUG! cannot determine board type!\n"); | 565 | dev_err(dev->class_dev, "BUG! cannot determine board type!\n"); |
| 566 | return -EINVAL; | 566 | return -EINVAL; |
| 567 | } | 567 | } |
| 568 | /* | ||
| 569 | * Need to 'get' the PCI device to match the 'put' in pc236_detach(). | ||
| 570 | * TODO: Remove the pci_dev_get() and matching pci_dev_put() once | ||
| 571 | * support for manual attachment of PCI devices via pc236_attach() | ||
| 572 | * has been removed. | ||
| 573 | */ | ||
| 574 | pci_dev_get(pci_dev); | ||
| 568 | return pc236_pci_common_attach(dev, pci_dev); | 575 | return pc236_pci_common_attach(dev, pci_dev); |
| 569 | } | 576 | } |
| 570 | 577 | ||
diff --git a/drivers/staging/comedi/drivers/amplc_pc263.c b/drivers/staging/comedi/drivers/amplc_pc263.c index 40ec1ffebba6..8191c4e28e0a 100644 --- a/drivers/staging/comedi/drivers/amplc_pc263.c +++ b/drivers/staging/comedi/drivers/amplc_pc263.c | |||
| @@ -298,6 +298,13 @@ static int __devinit pc263_attach_pci(struct comedi_device *dev, | |||
| 298 | dev_err(dev->class_dev, "BUG! cannot determine board type!\n"); | 298 | dev_err(dev->class_dev, "BUG! cannot determine board type!\n"); |
| 299 | return -EINVAL; | 299 | return -EINVAL; |
| 300 | } | 300 | } |
| 301 | /* | ||
| 302 | * Need to 'get' the PCI device to match the 'put' in pc263_detach(). | ||
| 303 | * TODO: Remove the pci_dev_get() and matching pci_dev_put() once | ||
| 304 | * support for manual attachment of PCI devices via pc263_attach() | ||
| 305 | * has been removed. | ||
| 306 | */ | ||
| 307 | pci_dev_get(pci_dev); | ||
| 301 | return pc263_pci_common_attach(dev, pci_dev); | 308 | return pc263_pci_common_attach(dev, pci_dev); |
| 302 | } | 309 | } |
| 303 | 310 | ||
diff --git a/drivers/staging/comedi/drivers/amplc_pci224.c b/drivers/staging/comedi/drivers/amplc_pci224.c index 4e17f13e57f6..8bf109e7bb05 100644 --- a/drivers/staging/comedi/drivers/amplc_pci224.c +++ b/drivers/staging/comedi/drivers/amplc_pci224.c | |||
| @@ -1503,6 +1503,13 @@ pci224_attach_pci(struct comedi_device *dev, struct pci_dev *pci_dev) | |||
| 1503 | DRIVER_NAME ": BUG! cannot determine board type!\n"); | 1503 | DRIVER_NAME ": BUG! cannot determine board type!\n"); |
| 1504 | return -EINVAL; | 1504 | return -EINVAL; |
| 1505 | } | 1505 | } |
| 1506 | /* | ||
| 1507 | * Need to 'get' the PCI device to match the 'put' in pci224_detach(). | ||
| 1508 | * TODO: Remove the pci_dev_get() and matching pci_dev_put() once | ||
| 1509 | * support for manual attachment of PCI devices via pci224_attach() | ||
| 1510 | * has been removed. | ||
| 1511 | */ | ||
| 1512 | pci_dev_get(pci_dev); | ||
| 1506 | return pci224_attach_common(dev, pci_dev, NULL); | 1513 | return pci224_attach_common(dev, pci_dev, NULL); |
| 1507 | } | 1514 | } |
| 1508 | 1515 | ||
diff --git a/drivers/staging/comedi/drivers/amplc_pci230.c b/drivers/staging/comedi/drivers/amplc_pci230.c index 1b67d0c61fa7..66e74bd12267 100644 --- a/drivers/staging/comedi/drivers/amplc_pci230.c +++ b/drivers/staging/comedi/drivers/amplc_pci230.c | |||
| @@ -2925,6 +2925,13 @@ static int __devinit pci230_attach_pci(struct comedi_device *dev, | |||
| 2925 | "amplc_pci230: BUG! cannot determine board type!\n"); | 2925 | "amplc_pci230: BUG! cannot determine board type!\n"); |
| 2926 | return -EINVAL; | 2926 | return -EINVAL; |
| 2927 | } | 2927 | } |
| 2928 | /* | ||
| 2929 | * Need to 'get' the PCI device to match the 'put' in pci230_detach(). | ||
| 2930 | * TODO: Remove the pci_dev_get() and matching pci_dev_put() once | ||
| 2931 | * support for manual attachment of PCI devices via pci230_attach() | ||
| 2932 | * has been removed. | ||
| 2933 | */ | ||
| 2934 | pci_dev_get(pci_dev); | ||
| 2928 | return pci230_attach_common(dev, pci_dev); | 2935 | return pci230_attach_common(dev, pci_dev); |
| 2929 | } | 2936 | } |
| 2930 | 2937 | ||
diff --git a/drivers/staging/comedi/drivers/das08.c b/drivers/staging/comedi/drivers/das08.c index 874e02e47668..67a914a10b55 100644 --- a/drivers/staging/comedi/drivers/das08.c +++ b/drivers/staging/comedi/drivers/das08.c | |||
| @@ -378,7 +378,7 @@ das08jr_ao_winsn(struct comedi_device *dev, struct comedi_subdevice *s, | |||
| 378 | int chan; | 378 | int chan; |
| 379 | 379 | ||
| 380 | lsb = data[0] & 0xff; | 380 | lsb = data[0] & 0xff; |
| 381 | msb = (data[0] >> 8) & 0xf; | 381 | msb = (data[0] >> 8) & 0xff; |
| 382 | 382 | ||
| 383 | chan = CR_CHAN(insn->chanspec); | 383 | chan = CR_CHAN(insn->chanspec); |
| 384 | 384 | ||
| @@ -623,7 +623,7 @@ static const struct das08_board_struct das08_boards[] = { | |||
| 623 | .ai = das08_ai_rinsn, | 623 | .ai = das08_ai_rinsn, |
| 624 | .ai_nbits = 16, | 624 | .ai_nbits = 16, |
| 625 | .ai_pg = das08_pg_none, | 625 | .ai_pg = das08_pg_none, |
| 626 | .ai_encoding = das08_encode12, | 626 | .ai_encoding = das08_encode16, |
| 627 | .ao = das08jr_ao_winsn, | 627 | .ao = das08jr_ao_winsn, |
| 628 | .ao_nbits = 16, | 628 | .ao_nbits = 16, |
| 629 | .di = das08jr_di_rbits, | 629 | .di = das08jr_di_rbits, |
| @@ -922,6 +922,13 @@ das08_attach_pci(struct comedi_device *dev, struct pci_dev *pdev) | |||
| 922 | dev_err(dev->class_dev, "BUG! cannot determine board type!\n"); | 922 | dev_err(dev->class_dev, "BUG! cannot determine board type!\n"); |
| 923 | return -EINVAL; | 923 | return -EINVAL; |
| 924 | } | 924 | } |
| 925 | /* | ||
| 926 | * Need to 'get' the PCI device to match the 'put' in das08_detach(). | ||
| 927 | * TODO: Remove the pci_dev_get() and matching pci_dev_put() once | ||
| 928 | * support for manual attachment of PCI devices via das08_attach() | ||
| 929 | * has been removed. | ||
| 930 | */ | ||
| 931 | pci_dev_get(pdev); | ||
| 925 | return das08_pci_attach_common(dev, pdev); | 932 | return das08_pci_attach_common(dev, pdev); |
| 926 | } | 933 | } |
| 927 | 934 | ||
diff --git a/drivers/staging/iio/accel/lis3l02dq_ring.c b/drivers/staging/iio/accel/lis3l02dq_ring.c index 18d108fd967a..f3da59063ed2 100644 --- a/drivers/staging/iio/accel/lis3l02dq_ring.c +++ b/drivers/staging/iio/accel/lis3l02dq_ring.c | |||
| @@ -121,8 +121,10 @@ static int lis3l02dq_get_buffer_element(struct iio_dev *indio_dev, | |||
| 121 | if (rx_array == NULL) | 121 | if (rx_array == NULL) |
| 122 | return -ENOMEM; | 122 | return -ENOMEM; |
| 123 | ret = lis3l02dq_read_all(indio_dev, rx_array); | 123 | ret = lis3l02dq_read_all(indio_dev, rx_array); |
| 124 | if (ret < 0) | 124 | if (ret < 0) { |
| 125 | kfree(rx_array); | ||
| 125 | return ret; | 126 | return ret; |
| 127 | } | ||
| 126 | for (i = 0; i < scan_count; i++) | 128 | for (i = 0; i < scan_count; i++) |
| 127 | data[i] = combine_8_to_16(rx_array[i*4+1], | 129 | data[i] = combine_8_to_16(rx_array[i*4+1], |
| 128 | rx_array[i*4+3]); | 130 | rx_array[i*4+3]); |
diff --git a/drivers/staging/iio/adc/ad7192.c b/drivers/staging/iio/adc/ad7192.c index 095837285f4f..19a064d649e3 100644 --- a/drivers/staging/iio/adc/ad7192.c +++ b/drivers/staging/iio/adc/ad7192.c | |||
| @@ -647,6 +647,8 @@ static ssize_t ad7192_write_frequency(struct device *dev, | |||
| 647 | ret = strict_strtoul(buf, 10, &lval); | 647 | ret = strict_strtoul(buf, 10, &lval); |
| 648 | if (ret) | 648 | if (ret) |
| 649 | return ret; | 649 | return ret; |
| 650 | if (lval == 0) | ||
| 651 | return -EINVAL; | ||
| 650 | 652 | ||
| 651 | mutex_lock(&indio_dev->mlock); | 653 | mutex_lock(&indio_dev->mlock); |
| 652 | if (iio_buffer_enabled(indio_dev)) { | 654 | if (iio_buffer_enabled(indio_dev)) { |
diff --git a/drivers/staging/iio/gyro/adis16260_core.c b/drivers/staging/iio/gyro/adis16260_core.c index 93aa431287ac..eb8e9d69efd3 100644 --- a/drivers/staging/iio/gyro/adis16260_core.c +++ b/drivers/staging/iio/gyro/adis16260_core.c | |||
| @@ -195,6 +195,8 @@ static ssize_t adis16260_write_frequency(struct device *dev, | |||
| 195 | ret = strict_strtol(buf, 10, &val); | 195 | ret = strict_strtol(buf, 10, &val); |
| 196 | if (ret) | 196 | if (ret) |
| 197 | return ret; | 197 | return ret; |
| 198 | if (val == 0) | ||
| 199 | return -EINVAL; | ||
| 198 | 200 | ||
| 199 | mutex_lock(&indio_dev->mlock); | 201 | mutex_lock(&indio_dev->mlock); |
| 200 | if (spi_get_device_id(st->us)) { | 202 | if (spi_get_device_id(st->us)) { |
diff --git a/drivers/staging/iio/imu/adis16400_core.c b/drivers/staging/iio/imu/adis16400_core.c index 1f4c17779b5a..a618327e06ed 100644 --- a/drivers/staging/iio/imu/adis16400_core.c +++ b/drivers/staging/iio/imu/adis16400_core.c | |||
| @@ -234,6 +234,8 @@ static ssize_t adis16400_write_frequency(struct device *dev, | |||
| 234 | ret = strict_strtol(buf, 10, &val); | 234 | ret = strict_strtol(buf, 10, &val); |
| 235 | if (ret) | 235 | if (ret) |
| 236 | return ret; | 236 | return ret; |
| 237 | if (val == 0) | ||
| 238 | return -EINVAL; | ||
| 237 | 239 | ||
| 238 | mutex_lock(&indio_dev->mlock); | 240 | mutex_lock(&indio_dev->mlock); |
| 239 | 241 | ||
diff --git a/drivers/staging/iio/meter/ade7753.c b/drivers/staging/iio/meter/ade7753.c index f04ece7fbc2f..3ccff189f258 100644 --- a/drivers/staging/iio/meter/ade7753.c +++ b/drivers/staging/iio/meter/ade7753.c | |||
| @@ -425,6 +425,8 @@ static ssize_t ade7753_write_frequency(struct device *dev, | |||
| 425 | ret = strict_strtol(buf, 10, &val); | 425 | ret = strict_strtol(buf, 10, &val); |
| 426 | if (ret) | 426 | if (ret) |
| 427 | return ret; | 427 | return ret; |
| 428 | if (val == 0) | ||
| 429 | return -EINVAL; | ||
| 428 | 430 | ||
| 429 | mutex_lock(&indio_dev->mlock); | 431 | mutex_lock(&indio_dev->mlock); |
| 430 | 432 | ||
diff --git a/drivers/staging/iio/meter/ade7754.c b/drivers/staging/iio/meter/ade7754.c index 6cee28a5e877..abb1e9c8d094 100644 --- a/drivers/staging/iio/meter/ade7754.c +++ b/drivers/staging/iio/meter/ade7754.c | |||
| @@ -445,6 +445,8 @@ static ssize_t ade7754_write_frequency(struct device *dev, | |||
| 445 | ret = strict_strtol(buf, 10, &val); | 445 | ret = strict_strtol(buf, 10, &val); |
| 446 | if (ret) | 446 | if (ret) |
| 447 | return ret; | 447 | return ret; |
| 448 | if (val == 0) | ||
| 449 | return -EINVAL; | ||
| 448 | 450 | ||
| 449 | mutex_lock(&indio_dev->mlock); | 451 | mutex_lock(&indio_dev->mlock); |
| 450 | 452 | ||
diff --git a/drivers/staging/iio/meter/ade7759.c b/drivers/staging/iio/meter/ade7759.c index b3f7e0fa9612..eb0a2a98f388 100644 --- a/drivers/staging/iio/meter/ade7759.c +++ b/drivers/staging/iio/meter/ade7759.c | |||
| @@ -385,6 +385,8 @@ static ssize_t ade7759_write_frequency(struct device *dev, | |||
| 385 | ret = strict_strtol(buf, 10, &val); | 385 | ret = strict_strtol(buf, 10, &val); |
| 386 | if (ret) | 386 | if (ret) |
| 387 | return ret; | 387 | return ret; |
| 388 | if (val == 0) | ||
| 389 | return -EINVAL; | ||
| 388 | 390 | ||
| 389 | mutex_lock(&indio_dev->mlock); | 391 | mutex_lock(&indio_dev->mlock); |
| 390 | 392 | ||
diff --git a/drivers/staging/omapdrm/omap_connector.c b/drivers/staging/omapdrm/omap_connector.c index 5e2856c0e0bb..55e9c8655850 100644 --- a/drivers/staging/omapdrm/omap_connector.c +++ b/drivers/staging/omapdrm/omap_connector.c | |||
| @@ -48,13 +48,20 @@ static inline void copy_timings_omap_to_drm(struct drm_display_mode *mode, | |||
| 48 | mode->vsync_end = mode->vsync_start + timings->vsw; | 48 | mode->vsync_end = mode->vsync_start + timings->vsw; |
| 49 | mode->vtotal = mode->vsync_end + timings->vbp; | 49 | mode->vtotal = mode->vsync_end + timings->vbp; |
| 50 | 50 | ||
| 51 | /* note: whether or not it is interlaced, +/- h/vsync, etc, | 51 | mode->flags = 0; |
| 52 | * which should be set in the mode flags, is not exposed in | 52 | |
| 53 | * the omap_video_timings struct.. but hdmi driver tracks | 53 | if (timings->interlace) |
| 54 | * those separately so all we have to have to set the mode | 54 | mode->flags |= DRM_MODE_FLAG_INTERLACE; |
| 55 | * is the way to recover these timings values, and the | 55 | |
| 56 | * omap_dss_driver would do the rest. | 56 | if (timings->hsync_level == OMAPDSS_SIG_ACTIVE_HIGH) |
| 57 | */ | 57 | mode->flags |= DRM_MODE_FLAG_PHSYNC; |
| 58 | else | ||
| 59 | mode->flags |= DRM_MODE_FLAG_NHSYNC; | ||
| 60 | |||
| 61 | if (timings->vsync_level == OMAPDSS_SIG_ACTIVE_HIGH) | ||
| 62 | mode->flags |= DRM_MODE_FLAG_PVSYNC; | ||
| 63 | else | ||
| 64 | mode->flags |= DRM_MODE_FLAG_NVSYNC; | ||
| 58 | } | 65 | } |
| 59 | 66 | ||
| 60 | static inline void copy_timings_drm_to_omap(struct omap_video_timings *timings, | 67 | static inline void copy_timings_drm_to_omap(struct omap_video_timings *timings, |
| @@ -71,6 +78,22 @@ static inline void copy_timings_drm_to_omap(struct omap_video_timings *timings, | |||
| 71 | timings->vfp = mode->vsync_start - mode->vdisplay; | 78 | timings->vfp = mode->vsync_start - mode->vdisplay; |
| 72 | timings->vsw = mode->vsync_end - mode->vsync_start; | 79 | timings->vsw = mode->vsync_end - mode->vsync_start; |
| 73 | timings->vbp = mode->vtotal - mode->vsync_end; | 80 | timings->vbp = mode->vtotal - mode->vsync_end; |
| 81 | |||
| 82 | timings->interlace = !!(mode->flags & DRM_MODE_FLAG_INTERLACE); | ||
| 83 | |||
| 84 | if (mode->flags & DRM_MODE_FLAG_PHSYNC) | ||
| 85 | timings->hsync_level = OMAPDSS_SIG_ACTIVE_HIGH; | ||
| 86 | else | ||
| 87 | timings->hsync_level = OMAPDSS_SIG_ACTIVE_LOW; | ||
| 88 | |||
| 89 | if (mode->flags & DRM_MODE_FLAG_PVSYNC) | ||
| 90 | timings->vsync_level = OMAPDSS_SIG_ACTIVE_HIGH; | ||
| 91 | else | ||
| 92 | timings->vsync_level = OMAPDSS_SIG_ACTIVE_LOW; | ||
| 93 | |||
| 94 | timings->data_pclk_edge = OMAPDSS_DRIVE_SIG_RISING_EDGE; | ||
| 95 | timings->de_level = OMAPDSS_SIG_ACTIVE_HIGH; | ||
| 96 | timings->sync_pclk_edge = OMAPDSS_DRIVE_SIG_OPPOSITE_EDGES; | ||
| 74 | } | 97 | } |
| 75 | 98 | ||
| 76 | static void omap_connector_dpms(struct drm_connector *connector, int mode) | 99 | static void omap_connector_dpms(struct drm_connector *connector, int mode) |
| @@ -187,7 +210,7 @@ static int omap_connector_get_modes(struct drm_connector *connector) | |||
| 187 | } | 210 | } |
| 188 | } else { | 211 | } else { |
| 189 | struct drm_display_mode *mode = drm_mode_create(dev); | 212 | struct drm_display_mode *mode = drm_mode_create(dev); |
| 190 | struct omap_video_timings timings; | 213 | struct omap_video_timings timings = {0}; |
| 191 | 214 | ||
| 192 | dssdrv->get_timings(dssdev, &timings); | 215 | dssdrv->get_timings(dssdev, &timings); |
| 193 | 216 | ||
| @@ -291,7 +314,7 @@ void omap_connector_mode_set(struct drm_connector *connector, | |||
| 291 | struct omap_connector *omap_connector = to_omap_connector(connector); | 314 | struct omap_connector *omap_connector = to_omap_connector(connector); |
| 292 | struct omap_dss_device *dssdev = omap_connector->dssdev; | 315 | struct omap_dss_device *dssdev = omap_connector->dssdev; |
| 293 | struct omap_dss_driver *dssdrv = dssdev->driver; | 316 | struct omap_dss_driver *dssdrv = dssdev->driver; |
| 294 | struct omap_video_timings timings; | 317 | struct omap_video_timings timings = {0}; |
| 295 | 318 | ||
| 296 | copy_timings_drm_to_omap(&timings, mode); | 319 | copy_timings_drm_to_omap(&timings, mode); |
| 297 | 320 | ||
diff --git a/drivers/staging/ozwpan/ozcdev.c b/drivers/staging/ozwpan/ozcdev.c index d98321945802..758ce0a8d82e 100644 --- a/drivers/staging/ozwpan/ozcdev.c +++ b/drivers/staging/ozwpan/ozcdev.c | |||
| @@ -8,6 +8,7 @@ | |||
| 8 | #include <linux/cdev.h> | 8 | #include <linux/cdev.h> |
| 9 | #include <linux/uaccess.h> | 9 | #include <linux/uaccess.h> |
| 10 | #include <linux/netdevice.h> | 10 | #include <linux/netdevice.h> |
| 11 | #include <linux/etherdevice.h> | ||
| 11 | #include <linux/poll.h> | 12 | #include <linux/poll.h> |
| 12 | #include <linux/sched.h> | 13 | #include <linux/sched.h> |
| 13 | #include "ozconfig.h" | 14 | #include "ozconfig.h" |
| @@ -213,7 +214,7 @@ static int oz_set_active_pd(u8 *addr) | |||
| 213 | if (old_pd) | 214 | if (old_pd) |
| 214 | oz_pd_put(old_pd); | 215 | oz_pd_put(old_pd); |
| 215 | } else { | 216 | } else { |
| 216 | if (!memcmp(addr, "\0\0\0\0\0\0", sizeof(addr))) { | 217 | if (is_zero_ether_addr(addr)) { |
| 217 | spin_lock_bh(&g_cdev.lock); | 218 | spin_lock_bh(&g_cdev.lock); |
| 218 | pd = g_cdev.active_pd; | 219 | pd = g_cdev.active_pd; |
| 219 | g_cdev.active_pd = 0; | 220 | g_cdev.active_pd = 0; |
diff --git a/drivers/staging/rtl8712/recv_linux.c b/drivers/staging/rtl8712/recv_linux.c index 0e26d5f6cf2d..495ee1205e02 100644 --- a/drivers/staging/rtl8712/recv_linux.c +++ b/drivers/staging/rtl8712/recv_linux.c | |||
| @@ -117,13 +117,8 @@ void r8712_recv_indicatepkt(struct _adapter *padapter, | |||
| 117 | if (skb == NULL) | 117 | if (skb == NULL) |
| 118 | goto _recv_indicatepkt_drop; | 118 | goto _recv_indicatepkt_drop; |
| 119 | skb->data = precv_frame->u.hdr.rx_data; | 119 | skb->data = precv_frame->u.hdr.rx_data; |
| 120 | #ifdef NET_SKBUFF_DATA_USES_OFFSET | ||
| 121 | skb->tail = (sk_buff_data_t)(precv_frame->u.hdr.rx_tail - | ||
| 122 | precv_frame->u.hdr.rx_head); | ||
| 123 | #else | ||
| 124 | skb->tail = (sk_buff_data_t)precv_frame->u.hdr.rx_tail; | ||
| 125 | #endif | ||
| 126 | skb->len = precv_frame->u.hdr.len; | 120 | skb->len = precv_frame->u.hdr.len; |
| 121 | skb_set_tail_pointer(skb, skb->len); | ||
| 127 | if ((pattrib->tcpchk_valid == 1) && (pattrib->tcp_chkrpt == 1)) | 122 | if ((pattrib->tcpchk_valid == 1) && (pattrib->tcp_chkrpt == 1)) |
| 128 | skb->ip_summed = CHECKSUM_UNNECESSARY; | 123 | skb->ip_summed = CHECKSUM_UNNECESSARY; |
| 129 | else | 124 | else |
diff --git a/drivers/staging/vt6656/dpc.c b/drivers/staging/vt6656/dpc.c index e4bdf2a2b582..3aa895ec6507 100644 --- a/drivers/staging/vt6656/dpc.c +++ b/drivers/staging/vt6656/dpc.c | |||
| @@ -200,7 +200,7 @@ s_vProcessRxMACHeader ( | |||
| 200 | } else if (!compare_ether_addr(pbyRxBuffer, &pDevice->abySNAP_RFC1042[0])) { | 200 | } else if (!compare_ether_addr(pbyRxBuffer, &pDevice->abySNAP_RFC1042[0])) { |
| 201 | cbHeaderSize += 6; | 201 | cbHeaderSize += 6; |
| 202 | pwType = (PWORD) (pbyRxBufferAddr + cbHeaderSize); | 202 | pwType = (PWORD) (pbyRxBufferAddr + cbHeaderSize); |
| 203 | if ((*pwType == cpu_to_le16(ETH_P_IPX)) || | 203 | if ((*pwType == cpu_to_be16(ETH_P_IPX)) || |
| 204 | (*pwType == cpu_to_le16(0xF380))) { | 204 | (*pwType == cpu_to_le16(0xF380))) { |
| 205 | cbHeaderSize -= 8; | 205 | cbHeaderSize -= 8; |
| 206 | pwType = (PWORD) (pbyRxBufferAddr + cbHeaderSize); | 206 | pwType = (PWORD) (pbyRxBufferAddr + cbHeaderSize); |
diff --git a/drivers/staging/vt6656/rxtx.c b/drivers/staging/vt6656/rxtx.c index bb464527fc1b..b6e04e7b629b 100644 --- a/drivers/staging/vt6656/rxtx.c +++ b/drivers/staging/vt6656/rxtx.c | |||
| @@ -1699,7 +1699,7 @@ s_bPacketToWirelessUsb( | |||
| 1699 | // 802.1H | 1699 | // 802.1H |
| 1700 | if (ntohs(psEthHeader->wType) > ETH_DATA_LEN) { | 1700 | if (ntohs(psEthHeader->wType) > ETH_DATA_LEN) { |
| 1701 | if (pDevice->dwDiagRefCount == 0) { | 1701 | if (pDevice->dwDiagRefCount == 0) { |
| 1702 | if ((psEthHeader->wType == cpu_to_le16(ETH_P_IPX)) || | 1702 | if ((psEthHeader->wType == cpu_to_be16(ETH_P_IPX)) || |
| 1703 | (psEthHeader->wType == cpu_to_le16(0xF380))) { | 1703 | (psEthHeader->wType == cpu_to_le16(0xF380))) { |
| 1704 | memcpy((PBYTE) (pbyPayloadHead), | 1704 | memcpy((PBYTE) (pbyPayloadHead), |
| 1705 | abySNAP_Bridgetunnel, 6); | 1705 | abySNAP_Bridgetunnel, 6); |
| @@ -2838,10 +2838,10 @@ int nsDMA_tx_packet(PSDevice pDevice, unsigned int uDMAIdx, struct sk_buff *skb) | |||
| 2838 | Packet_Type = skb->data[ETH_HLEN+1]; | 2838 | Packet_Type = skb->data[ETH_HLEN+1]; |
| 2839 | Descriptor_type = skb->data[ETH_HLEN+1+1+2]; | 2839 | Descriptor_type = skb->data[ETH_HLEN+1+1+2]; |
| 2840 | Key_info = (skb->data[ETH_HLEN+1+1+2+1] << 8)|(skb->data[ETH_HLEN+1+1+2+2]); | 2840 | Key_info = (skb->data[ETH_HLEN+1+1+2+1] << 8)|(skb->data[ETH_HLEN+1+1+2+2]); |
| 2841 | if (pDevice->sTxEthHeader.wType == cpu_to_le16(ETH_P_PAE)) { | 2841 | if (pDevice->sTxEthHeader.wType == cpu_to_be16(ETH_P_PAE)) { |
| 2842 | /* 802.1x OR eapol-key challenge frame transfer */ | 2842 | /* 802.1x OR eapol-key challenge frame transfer */ |
| 2843 | if (((Protocol_Version == 1) || (Protocol_Version == 2)) && | 2843 | if (((Protocol_Version == 1) || (Protocol_Version == 2)) && |
| 2844 | (Packet_Type == 3)) { | 2844 | (Packet_Type == 3)) { |
| 2845 | bTxeapol_key = TRUE; | 2845 | bTxeapol_key = TRUE; |
| 2846 | if(!(Key_info & BIT3) && //WPA or RSN group-key challenge | 2846 | if(!(Key_info & BIT3) && //WPA or RSN group-key challenge |
| 2847 | (Key_info & BIT8) && (Key_info & BIT9)) { //send 2/2 key | 2847 | (Key_info & BIT8) && (Key_info & BIT9)) { //send 2/2 key |
| @@ -2987,19 +2987,19 @@ int nsDMA_tx_packet(PSDevice pDevice, unsigned int uDMAIdx, struct sk_buff *skb) | |||
| 2987 | } | 2987 | } |
| 2988 | } | 2988 | } |
| 2989 | 2989 | ||
| 2990 | if (pDevice->sTxEthHeader.wType == cpu_to_le16(ETH_P_PAE)) { | 2990 | if (pDevice->sTxEthHeader.wType == cpu_to_be16(ETH_P_PAE)) { |
| 2991 | if (pDevice->byBBType != BB_TYPE_11A) { | 2991 | if (pDevice->byBBType != BB_TYPE_11A) { |
| 2992 | pDevice->wCurrentRate = RATE_1M; | 2992 | pDevice->wCurrentRate = RATE_1M; |
| 2993 | pDevice->byACKRate = RATE_1M; | 2993 | pDevice->byACKRate = RATE_1M; |
| 2994 | pDevice->byTopCCKBasicRate = RATE_1M; | 2994 | pDevice->byTopCCKBasicRate = RATE_1M; |
| 2995 | pDevice->byTopOFDMBasicRate = RATE_6M; | 2995 | pDevice->byTopOFDMBasicRate = RATE_6M; |
| 2996 | } else { | 2996 | } else { |
| 2997 | pDevice->wCurrentRate = RATE_6M; | 2997 | pDevice->wCurrentRate = RATE_6M; |
| 2998 | pDevice->byACKRate = RATE_6M; | 2998 | pDevice->byACKRate = RATE_6M; |
| 2999 | pDevice->byTopCCKBasicRate = RATE_1M; | 2999 | pDevice->byTopCCKBasicRate = RATE_1M; |
| 3000 | pDevice->byTopOFDMBasicRate = RATE_6M; | 3000 | pDevice->byTopOFDMBasicRate = RATE_6M; |
| 3001 | } | 3001 | } |
| 3002 | } | 3002 | } |
| 3003 | 3003 | ||
| 3004 | DBG_PRT(MSG_LEVEL_DEBUG, | 3004 | DBG_PRT(MSG_LEVEL_DEBUG, |
| 3005 | KERN_INFO "dma_tx: pDevice->wCurrentRate = %d\n", | 3005 | KERN_INFO "dma_tx: pDevice->wCurrentRate = %d\n", |
| @@ -3015,7 +3015,7 @@ int nsDMA_tx_packet(PSDevice pDevice, unsigned int uDMAIdx, struct sk_buff *skb) | |||
| 3015 | 3015 | ||
| 3016 | if (bNeedEncryption == TRUE) { | 3016 | if (bNeedEncryption == TRUE) { |
| 3017 | DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"ntohs Pkt Type=%04x\n", ntohs(pDevice->sTxEthHeader.wType)); | 3017 | DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"ntohs Pkt Type=%04x\n", ntohs(pDevice->sTxEthHeader.wType)); |
| 3018 | if ((pDevice->sTxEthHeader.wType) == cpu_to_le16(ETH_P_PAE)) { | 3018 | if ((pDevice->sTxEthHeader.wType) == cpu_to_be16(ETH_P_PAE)) { |
| 3019 | bNeedEncryption = FALSE; | 3019 | bNeedEncryption = FALSE; |
| 3020 | DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Pkt Type=%04x\n", (pDevice->sTxEthHeader.wType)); | 3020 | DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Pkt Type=%04x\n", (pDevice->sTxEthHeader.wType)); |
| 3021 | if ((pMgmt->eCurrMode == WMAC_MODE_ESS_STA) && (pMgmt->eCurrState == WMAC_STATE_ASSOC)) { | 3021 | if ((pMgmt->eCurrMode == WMAC_MODE_ESS_STA) && (pMgmt->eCurrState == WMAC_STATE_ASSOC)) { |
diff --git a/drivers/staging/wlan-ng/cfg80211.c b/drivers/staging/wlan-ng/cfg80211.c index fabff4d650ef..0970127344e6 100644 --- a/drivers/staging/wlan-ng/cfg80211.c +++ b/drivers/staging/wlan-ng/cfg80211.c | |||
| @@ -327,9 +327,9 @@ int prism2_get_station(struct wiphy *wiphy, struct net_device *dev, | |||
| 327 | return result; | 327 | return result; |
| 328 | } | 328 | } |
| 329 | 329 | ||
| 330 | int prism2_scan(struct wiphy *wiphy, struct net_device *dev, | 330 | int prism2_scan(struct wiphy *wiphy, struct cfg80211_scan_request *request) |
| 331 | struct cfg80211_scan_request *request) | ||
| 332 | { | 331 | { |
| 332 | struct net_device *dev = request->wdev->netdev; | ||
| 333 | struct prism2_wiphy_private *priv = wiphy_priv(wiphy); | 333 | struct prism2_wiphy_private *priv = wiphy_priv(wiphy); |
| 334 | wlandevice_t *wlandev = dev->ml_priv; | 334 | wlandevice_t *wlandev = dev->ml_priv; |
| 335 | struct p80211msg_dot11req_scan msg1; | 335 | struct p80211msg_dot11req_scan msg1; |
diff --git a/drivers/staging/zcache/zcache-main.c b/drivers/staging/zcache/zcache-main.c index c214977b4ab4..52b43b7b83d7 100644 --- a/drivers/staging/zcache/zcache-main.c +++ b/drivers/staging/zcache/zcache-main.c | |||
| @@ -1251,13 +1251,12 @@ static int zcache_pampd_get_data_and_free(char *data, size_t *bufsize, bool raw, | |||
| 1251 | void *pampd, struct tmem_pool *pool, | 1251 | void *pampd, struct tmem_pool *pool, |
| 1252 | struct tmem_oid *oid, uint32_t index) | 1252 | struct tmem_oid *oid, uint32_t index) |
| 1253 | { | 1253 | { |
| 1254 | int ret = 0; | ||
| 1255 | |||
| 1256 | BUG_ON(!is_ephemeral(pool)); | 1254 | BUG_ON(!is_ephemeral(pool)); |
| 1257 | zbud_decompress((struct page *)(data), pampd); | 1255 | if (zbud_decompress((struct page *)(data), pampd) < 0) |
| 1256 | return -EINVAL; | ||
| 1258 | zbud_free_and_delist((struct zbud_hdr *)pampd); | 1257 | zbud_free_and_delist((struct zbud_hdr *)pampd); |
| 1259 | atomic_dec(&zcache_curr_eph_pampd_count); | 1258 | atomic_dec(&zcache_curr_eph_pampd_count); |
| 1260 | return ret; | 1259 | return 0; |
| 1261 | } | 1260 | } |
| 1262 | 1261 | ||
| 1263 | /* | 1262 | /* |
