[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#772697: marked as done (unblock: broadcom-sta/6.30.223.248-3)



Your message dated Wed, 10 Dec 2014 10:29:28 +0100
with message-id <20141210092927.GA10548@ugent.be>
and subject line Re: Bug#772697: unblock: broadcom-sta/6.30.223.248-3
has caused the Debian Bug report #772697,
regarding unblock: broadcom-sta/6.30.223.248-3
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
772697: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=772697
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock

Please unblock package broadcom-sta

Hello,

Version 6.30.223.248-3 fixes #770327 which has severity set to critical.
It also includes minor doc change about supported hardware.

Thanks,
Cyril Lacoux.


Here is the changelog entry:

broadcom-sta (6.30.223.248-3) unstable; urgency=medium

  * Synced supported chipsets list with README.txt file (Closes: #762954).
  * Bumped standards version to 3.9.6 (No changes).
  * Added series of patches from Mickael MASSON <mmasson.dev@gmail.com> to
    fix system hang when activating monitor mode (Closes: #770327).

 -- Cyril Lacoux <clacoux@easter-eggs.com>  Sun, 07 Dec 2014 17:49:06 +0400


unblock broadcom-sta/6.30.223.248-3

-- System Information:
Debian Release: 8.0
  APT prefers unstable
  APT policy: (500, 'unstable'), (200, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 3.16.0-4-amd64 (SMP w/8 CPU cores)
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8) (ignored: LC_ALL
set to fr_FR.UTF-8)
diff -Nru broadcom-sta-6.30.223.248/debian/changelog broadcom-sta-6.30.223.248/debian/changelog
--- broadcom-sta-6.30.223.248/debian/changelog	2014-10-20 20:45:06.000000000 +0400
+++ broadcom-sta-6.30.223.248/debian/changelog	2014-12-07 18:07:56.000000000 +0400
@@ -1,3 +1,12 @@
+broadcom-sta (6.30.223.248-3) unstable; urgency=medium
+
+  * Synced supported chipsets list with README.txt file (Closes: #762954).
+  * Bumped standards version to 3.9.6 (No changes).
+  * Added series of patches from Mickael MASSON <mmasson.dev@gmail.com> to
+    fix system hang when activating monitor mode (Closes: #770327).
+
+ -- Cyril Lacoux <clacoux@easter-eggs.com>  Sun, 07 Dec 2014 17:49:06 +0400
+
 broadcom-sta (6.30.223.248-2) unstable; urgency=medium
 
   * Switched compression method from bz2 to xz.
diff -Nru broadcom-sta-6.30.223.248/debian/control broadcom-sta-6.30.223.248/debian/control
--- broadcom-sta-6.30.223.248/debian/control	2014-09-21 11:21:12.000000000 +0400
+++ broadcom-sta-6.30.223.248/debian/control	2014-10-28 11:15:47.000000000 +0400
@@ -3,7 +3,7 @@
 Priority: optional
 Maintainer: Cyril Lacoux <clacoux@easter-eggs.com>
 Build-Depends: debhelper (>= 8), dkms
-Standards-Version: 3.9.5
+Standards-Version: 3.9.6
 Homepage: http://www.broadcom.com/support/802.11/linux_sta.php
 
 Package: broadcom-sta-common
@@ -13,8 +13,8 @@
 Description: Common files for the Broadcom STA Wireless driver
  Broadcom STA is a binary-only device driver to support the following IEEE
  802.11a/b/g/n wireless network cards: BCM4311-, BCM4312-, BCM4313-,
- BCM4321-, BCM4322-, BCM43224-, BCM43225-, BCM43227-, and BCM43228-based
- hardware.
+ BCM4321-, BCM4322-, BCM43142-, BCM43224-, BCM43225-, BCM43227-, BCM43228-,
+ BCM4331-, BCM4360-, and BCM4352-based hardware.
  .
  This package contains the common files.
 
@@ -28,8 +28,8 @@
 Description: dkms source for the Broadcom STA Wireless driver
  Broadcom STA is a binary-only device driver to support the following IEEE
  802.11a/b/g/n wireless network cards: BCM4311-, BCM4312-, BCM4313-,
- BCM4314-, BCM4321-, BCM4322-, BCM43224-, BCM43225-, BCM43227-, BCM4352, and
- BCM43228-based hardware.
+ BCM4321-, BCM4322-, BCM43142-, BCM43224-, BCM43225-, BCM43227-, BCM43228-,
+ BCM4331-, BCM4360-, and BCM4352-based hardware.
  .
  This package provides the source code for the wl kernel modules. The
  wireless-tools package is also required in order to make use of these modules.
@@ -42,8 +42,8 @@
 Description: Source for the Broadcom STA Wireless driver
  Broadcom STA is a binary-only device driver to support the following IEEE
  802.11a/b/g/n wireless network cards: BCM4311-, BCM4312-, BCM4313-,
- BCM4314-, BCM4321-, BCM4322-, BCM43224-, BCM43225-, BCM43227-, BCM4352, and
- BCM43228-based hardware.
+ BCM4321-, BCM4322-, BCM43142-, BCM43224-, BCM43225-, BCM43227-, BCM43228-,
+ BCM4331-, BCM4360-, and BCM4352-based hardware.
  .
  This package provides the source code for the wl kernel modules. The
  wireless-tools package is also required in order to make use of these modules.
diff -Nru broadcom-sta-6.30.223.248/debian/patches/07-fix_procfs_handling.patch broadcom-sta-6.30.223.248/debian/patches/07-fix_procfs_handling.patch
--- broadcom-sta-6.30.223.248/debian/patches/07-fix_procfs_handling.patch	1970-01-01 04:00:00.000000000 +0400
+++ broadcom-sta-6.30.223.248/debian/patches/07-fix_procfs_handling.patch	2014-12-07 17:25:46.000000000 +0400
@@ -0,0 +1,145 @@
+Description: Fix kernel crash/system hang because of incorrect pointer
+ argument use while retrieving cookie in procfs handling.
+ .
+ based on: http://ix.io/9DV
+ tested on: kernel 3.14
+Author: Mickael MASSON <mmasson.dev@gmail.com>
+Bug-Debian: https://bugs.debian.org/770327
+
+Index: broadcom-sta-6.30.223.248/amd64/src/wl/sys/wl_linux.c
+===================================================================
+--- broadcom-sta-6.30.223.248.orig/amd64/src/wl/sys/wl_linux.c	2014-12-07 17:23:06.437532026 +0400
++++ broadcom-sta-6.30.223.248/amd64/src/wl/sys/wl_linux.c	2014-12-07 17:23:06.433532026 +0400
+@@ -3225,42 +3225,75 @@
+ #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0)
+ static int
+ wl_proc_read(char *buffer, char **start, off_t offset, int length, int *eof, void *data)
++{
++	wl_info_t * wl = (wl_info_t *)data;
+ #else
+ static ssize_t
+-wl_proc_read(struct file *filp, char __user *buffer, size_t length, loff_t *data)
+-#endif
++wl_proc_read(struct file *filp, char __user *buffer, size_t length, loff_t *offp)
+ {
+-	wl_info_t * wl = (wl_info_t *)data;
+-	int to_user;
+-	int len;
++	wl_info_t * wl = PDE_DATA(file_inode(filp));
++#endif
++	int bcmerror, len;
++	int to_user = 0;
++	char tmp[8];
+ 
+ #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0)
+ 	if (offset > 0) {
+ 		*eof = 1;
+ 		return 0;
+ 	}
++#else
++	if (*offp > 0) { /* for example, stop: cat /proc/brcm_monitor0 */
++		return 0; /* 0 <=> EOF */
++	}
+ #endif
+ 
+-	if (!length) {
+-		WL_ERROR(("%s: Not enough return buf space\n", __FUNCTION__));
+-		return 0;
+-	}
+ 	WL_LOCK(wl);
+-	wlc_ioctl(wl->wlc, WLC_GET_MONITOR, &to_user, sizeof(int), NULL);
+-	len = sprintf(buffer, "%d\n", to_user);
+-	WL_UNLOCK(wl);
+-	return len;
++	bcmerror = wlc_ioctl(wl->wlc, WLC_GET_MONITOR, &to_user, sizeof(int), NULL);
++ 	WL_UNLOCK(wl);
++
++	if (bcmerror != BCME_OK) {
++		WL_ERROR(("%s: GET_MONITOR failed with %d\n", __FUNCTION__, bcmerror));
++		return -EIO;
++	}
++
++ 	len = snprintf(tmp, ARRAY_SIZE(tmp), "%d\n", to_user);
++	tmp[ARRAY_SIZE(tmp) - 1] = '\0';
++	if (len >= ARRAY_SIZE(tmp)) {
++		printk(KERN_ERR "%s:%d [%s()] output would be truncated (ret=%d)!", __FILE__, __LINE__, __FUNCTION__, len);
++		return -ERANGE;
++	}
++	else if (len < 0) {
++		printk(KERN_ERR "%s:%d [%s()] unable to convert value (ret=%d)!", __FILE__, __LINE__, __FUNCTION__, len);
++		return len;
++	}
++	if (length < len) {
++		printk(KERN_ERR "%s:%d [%s()] user buffer is too small (at least=%d ; user=%d)!", __FILE__, __LINE__, __FUNCTION__, len, (int)length);
++		return -EMSGSIZE;
++	}
++	if (copy_to_user(buffer, tmp, len) != 0) {
++		printk(KERN_ERR "%s:%d [%s()] unable to copy data!", __FILE__, __LINE__, __FUNCTION__);
++		return -EFAULT;
++	}
++	
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0)
++	*offp += len;
++#endif
++
++ 	return len;
+ }
+ 
+ #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0)
+ static int
+ wl_proc_write(struct file *filp, const char *buff, unsigned long length, void *data)
++{
++	wl_info_t * wl = (wl_info_t *)data;
+ #else
+ static ssize_t
+-wl_proc_write(struct file *filp, const char __user *buff, size_t length, loff_t *data)
+-#endif
++wl_proc_write(struct file *filp, const char __user *buff, size_t length, loff_t *offp)
+ {
+-	wl_info_t * wl = (wl_info_t *)data;
++	wl_info_t * wl = PDE_DATA(file_inode(filp));
++#endif
+ 	int from_user = 0;
+ 	int bcmerror;
+ 
+@@ -3271,7 +3304,11 @@
+ 	}
+ 	if (copy_from_user(&from_user, buff, 1)) {
+ 		WL_ERROR(("%s: copy from user failed\n", __FUNCTION__));
+-		return -EIO;
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0)
++ 		return -EIO;
++#else
++		return -EFAULT;
++#endif
+ 	}
+ 
+ 	if (from_user >= 0x30)
+@@ -3281,10 +3318,15 @@
+ 	bcmerror = wlc_ioctl(wl->wlc, WLC_SET_MONITOR, &from_user, sizeof(int), NULL);
+ 	WL_UNLOCK(wl);
+ 
+-	if (bcmerror < 0) {
++	if (bcmerror != BCME_OK) {
+ 		WL_ERROR(("%s: SET_MONITOR failed with %d\n", __FUNCTION__, bcmerror));
+ 		return -EIO;
+ 	}
++	
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0)) && 0 /* no need to update offset because this file should only trigger action... */
++	*offp += length;
++#endif
++
+ 	return length;
+ }
+ 
+@@ -3305,8 +3347,8 @@
+ 	if ((wl->proc_entry = create_proc_entry(tmp, 0644, NULL)) == NULL) {
+ 		WL_ERROR(("%s: create_proc_entry %s failed\n", __FUNCTION__, tmp));
+ #else
+-	if ((wl->proc_entry = proc_create(tmp, 0644, NULL, &wl_fops)) == NULL) {
+-		WL_ERROR(("%s: proc_create %s failed\n", __FUNCTION__, tmp));
++	if ((wl->proc_entry = proc_create_data(tmp, 0644, NULL, &wl_fops, wl)) == NULL) {
++		WL_ERROR(("%s: proc_create_data %s failed\n", __FUNCTION__, tmp));
+ #endif
+ 		ASSERT(0);
+ 		return -1;
diff -Nru broadcom-sta-6.30.223.248/debian/patches/08-enable_error_traces.patch broadcom-sta-6.30.223.248/debian/patches/08-enable_error_traces.patch
--- broadcom-sta-6.30.223.248/debian/patches/08-enable_error_traces.patch	1970-01-01 04:00:00.000000000 +0400
+++ broadcom-sta-6.30.223.248/debian/patches/08-enable_error_traces.patch	2014-12-07 17:28:33.000000000 +0400
@@ -0,0 +1,81 @@
+Description: enable error + add some traces
+ .
+ tested on: kernel 3.14
+Author: Mickael MASSON <mmasson.dev@gmail.com>
+Bug-Debian: https://bugs.debian.org/770327
+
+Index: broadcom-sta-6.30.223.248/amd64/src/wl/sys/wl_dbg.h
+===================================================================
+--- broadcom-sta-6.30.223.248.orig/amd64/src/wl/sys/wl_dbg.h	2014-12-07 17:28:28.393534724 +0400
++++ broadcom-sta-6.30.223.248/amd64/src/wl/sys/wl_dbg.h	2014-12-07 17:28:28.389534724 +0400
+@@ -55,10 +55,12 @@
+ 
+ #define WL_NONE(args)
+ 
++#define FORCE_TRACE_LEVEL(fmt, ...) do { printk(KERN_ERR fmt, ## __VA_ARGS__); } while (0) /* ## is GCC specific syntax to remove comma when single arg */
++
+ #ifdef BCMDBG_ERR
+ #define	WL_ERROR(args)		WL_PRINT(args)
+ #else
+-#define	WL_ERROR(args)
++#define	WL_ERROR(args)		FORCE_TRACE_LEVEL args
+ #endif 
+ #define	WL_TRACE(args)
+ #define WL_APSTA_UPDN(args)
+Index: broadcom-sta-6.30.223.248/amd64/src/wl/sys/wl_linux.c
+===================================================================
+--- broadcom-sta-6.30.223.248.orig/amd64/src/wl/sys/wl_linux.c	2014-12-07 17:28:28.393534724 +0400
++++ broadcom-sta-6.30.223.248/amd64/src/wl/sys/wl_linux.c	2014-12-07 17:28:28.389534724 +0400
+@@ -1272,6 +1272,7 @@
+ 		MFREE(wl->osh, wlif->dev, sizeof(struct net_device));
+ #else
+ 		free_netdev(wlif->dev);
++		wlif->dev = NULL;
+ #endif 
+ 	}
+ 
+@@ -2456,8 +2457,10 @@
+ 		p80211msg_t *phdr;
+ 
+ 		len = sizeof(p80211msg_t) + oskb->len - D11_PHY_HDR_LEN;
+-		if ((skb = dev_alloc_skb(len)) == NULL)
++		if ((skb = dev_alloc_skb(len)) == NULL) {
++			WL_ERROR(("in %s:%d [%s()] dev_alloc_skb() failure!", __FILE__, __LINE__, __FUNCTION__));
+ 			return;
++		}
+ 
+ 		skb_put(skb, len);
+ 		phdr = (p80211msg_t*)skb->data;
+@@ -2536,8 +2539,10 @@
+ 			rtap_len = sizeof(wl_radiotap_ht_brcm_2_t);
+ 
+ 		len = rtap_len + (oskb->len - D11_PHY_HDR_LEN);
+-		if ((skb = dev_alloc_skb(len)) == NULL)
++		if ((skb = dev_alloc_skb(len)) == NULL) {
++			WL_ERROR(("in %s:%d [%s()] dev_alloc_skb() failure!", __FILE__, __LINE__, __FUNCTION__));
+ 			return;
++		}
+ 
+ 		skb_put(skb, len);
+ 
+@@ -2665,8 +2670,10 @@
+ 			len += amsdu_len;
+ 		}
+ 
+-		if ((skb = dev_alloc_skb(len)) == NULL)
++		if ((skb = dev_alloc_skb(len)) == NULL) {
++			WL_ERROR(("in %s:%d [%s()] dev_alloc_skb() failure!", __FILE__, __LINE__, __FUNCTION__));
+ 			return;
++		}
+ 
+ 		skb_put(skb, len);
+ 
+@@ -2991,7 +2998,7 @@
+ }
+ 
+ void
+-wl_set_monitor(wl_info_t *wl, int val)
++wl_set_monitor(wl_info_t *wl, int val) /* public => is called by wlc_hybrid.o_shipped */
+ {
+ 	const char *devname;
+ 	wl_if_t *wlif;
diff -Nru broadcom-sta-6.30.223.248/debian/patches/09-fix_system_hang_when_deleting_monitor.patch broadcom-sta-6.30.223.248/debian/patches/09-fix_system_hang_when_deleting_monitor.patch
--- broadcom-sta-6.30.223.248/debian/patches/09-fix_system_hang_when_deleting_monitor.patch	1970-01-01 04:00:00.000000000 +0400
+++ broadcom-sta-6.30.223.248/debian/patches/09-fix_system_hang_when_deleting_monitor.patch	2014-12-07 17:30:29.000000000 +0400
@@ -0,0 +1,28 @@
+Description: Fix kernel crash/system hang when disabling monitor interface:
+ echo 0 > /proc/brcm_monitor0
+ .
+ tested on: kernel 3.14
+Author: Mickael MASSON <mmasson.dev@gmail.com>
+Bug-Debian: https://bugs.debian.org/770327
+
+Index: broadcom-sta-6.30.223.248/amd64/src/wl/sys/wl_cfg80211_hybrid.c
+===================================================================
+--- broadcom-sta-6.30.223.248.orig/amd64/src/wl/sys/wl_cfg80211_hybrid.c	2014-12-07 17:30:25.985535710 +0400
++++ broadcom-sta-6.30.223.248/amd64/src/wl/sys/wl_cfg80211_hybrid.c	2014-12-07 17:30:25.981535710 +0400
+@@ -2633,7 +2633,15 @@
+ 
+ void wl_cfg80211_detach(struct net_device *ndev)
+ {
+-	struct wl_cfg80211_priv *wl = ndev_to_wl(ndev);
++	struct wl_cfg80211_priv *wl;
++	struct wireless_dev *wdev;
++	
++	wdev = ndev->ieee80211_ptr;
++	if (wdev == NULL) {
++                printk(KERN_ERR "[%s()] in ndev=%p: IEEE80211ptr=%p\n", __FUNCTION__, ndev, wdev);
++                return;
++        }
++	wl = ndev_to_wl(ndev);
+ 
+ 	wl_deinit_cfg80211_priv(wl);
+ 	wl_free_wdev(wl);
diff -Nru broadcom-sta-6.30.223.248/debian/patches/series broadcom-sta-6.30.223.248/debian/patches/series
--- broadcom-sta-6.30.223.248/debian/patches/series	2014-10-20 09:58:33.000000000 +0400
+++ broadcom-sta-6.30.223.248/debian/patches/series	2014-12-07 17:18:59.000000000 +0400
@@ -5,3 +5,6 @@
 04-user_ioctl.patch
 05-kernel-3.15.0.patch
 06-kernel-3.17.0.patch
+07-fix_procfs_handling.patch
+08-enable_error_traces.patch
+09-fix_system_hang_when_deleting_monitor.patch

--- End Message ---
--- Begin Message ---
Hi,

On Wed, Dec 10, 2014 at 12:03:23PM +0400, Cyril Lacoux wrote:
> Please unblock package broadcom-sta

Already unblocked a few days ago.

Cheers,

Ivo

--- End Message ---

Reply to: