ksize() was added as of 2.6.29, it gives you the actual
size of the allocated data. Since we have no support for
this we simply do not optimize for it and deal with
large alloocations for the IEs.

We technically could backport this as

define ksize(bleh) SOME_LARGE_NUMBER

but doing it this way emphasis careful review
of the situation.

--- a/drivers/net/wireless/orinoco/wext.c
+++ b/drivers/net/wireless/orinoco/wext.c
@@ -30,8 +30,22 @@ static int orinoco_set_key(struct orinoc
 			   enum orinoco_alg alg, const u8 *key, int key_len,
 			   const u8 *seq, int seq_len)
 {
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,28)
+	int len;
+	if (!unlikely(ZERO_OR_NULL_PTR(priv->keys[index].key))) {
+		len = priv->keys[index].key_len;
+		memset(priv->keys[index].key, 0, len);
+		kfree(priv->keys[index].key);
+	}
+	if (!unlikely(ZERO_OR_NULL_PTR(priv->keys[index].seq))) {
+		len = priv->keys[index].seq_len;
+		memset(priv->keys[index].seq, 0, len);
+		kfree(priv->keys[index].seq);
+	}
+#else
 	kzfree(priv->keys[index].key);
 	kzfree(priv->keys[index].seq);
+#endif
 
 	if (key_len) {
 		priv->keys[index].key = kzalloc(key_len, GFP_ATOMIC);
--- a/net/wireless/scan.c
+++ b/net/wireless/scan.c
@@ -633,9 +633,14 @@ cfg80211_bss_update(struct cfg80211_regi
 			size_t used = dev->wiphy.bss_priv_size + sizeof(*res);
 			size_t ielen = res->pub.len_proberesp_ies;
 
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,28)
+			if (0) {
+				used = 0; /* just to shut up the compiler */
+#else
 			if (found->pub.proberesp_ies &&
 			    !found->proberesp_ies_allocated &&
 			    ksize(found) >= used + ielen) {
+#endif
 				memcpy(found->pub.proberesp_ies,
 				       res->pub.proberesp_ies, ielen);
 				found->pub.len_proberesp_ies = ielen;
@@ -669,9 +674,14 @@ cfg80211_bss_update(struct cfg80211_regi
 				(found->pub.information_elements ==
 				 found->pub.beacon_ies);
 
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,28)
+			if (0) {
+				used = 0; /* just to shut up the compiler */
+#else
 			if (found->pub.beacon_ies &&
 			    !found->beacon_ies_allocated &&
 			    ksize(found) >= used + ielen) {
+#endif
 				memcpy(found->pub.beacon_ies,
 				       res->pub.beacon_ies, ielen);
 				found->pub.len_beacon_ies = ielen;
