backports: Fix and document EXPORT_SYMBOL_GPL() preference
authorLuis R. Rodriguez <mcgrof@do-not-panic.com>
Fri, 12 Jul 2013 22:39:13 +0000 (15:39 -0700)
committerLuis R. Rodriguez <mcgrof@do-not-panic.com>
Fri, 12 Jul 2013 22:57:23 +0000 (15:57 -0700)
In terms of project naming the backports project has evolved
as follows:

compat-wireless --> compat-drivers --> backports

All along the design and intent behind the initial project
has been to provide a framework for delivery of *upstream*
drivers using a backported infrastructure. I've made it
clear that in no way shape or form did I ever want any
proprietary driver to make use of the framework. As the
project has grown I'm not alone with this sentiment so
lets document that and also fix a few symbols that have
slipped along the way.

Signed-off-by: Luis R. Rodriguez <mcgrof@do-not-panic.com>
README
backport/compat/backport-3.11.c
backport/compat/compat-2.6.25.c
backport/compat/compat-2.6.26.c
backport/compat/compat-2.6.37.c
backport/compat/compat-3.6.c
backport/compat/compat-3.8.c

diff --git a/README b/README
index 2f03852443cdeb040fc2496ea4cb944fa78b2df3..99718b1f43836e7458836bfe8fe475b3070c75f4 100644 (file)
--- a/README
+++ b/README
@@ -30,3 +30,16 @@ This work is a subset of the Linux kernel as such we keep the kernel's
 Copyright practice. Some files have their own copyright and in those
 cases the license is mentioned in the file. All additional work made
 to building this package is licensed under the GPLv2.
+
+# Backporting preference for EXPORT_SYMBOL_GPL() and proprietary drivers
+
+This framework was designed by intent since its inception *only* for upstream
+Linux kernel drivers to avoid excuses about the difficulty to support upstream
+Linux kernel development while also supporting users on older kernels. To
+ensure the intent is respected currently all symbols that we do work on to
+backport are exported via EXPORT_SYMBOL_GPL() as we do work to backport them
+for the supported kernels. By using EXPORT_SYMBOL_GPL() we make it *clear* that
+if you use the backported symbols your software *is* considered derivative
+works of the Linux kernel.
+
+Comprendes, Mendes?
index 332db4ab3f81205ab9ceb8ad9359cffff215d702..c6d5a02f140a2636bc0d6fb2a92bc6054ec646c5 100644 (file)
@@ -49,7 +49,7 @@ int arch_phys_wc_add(unsigned long base, unsigned long size)
        }
        return ret + MTRR_TO_PHYS_WC_OFFSET;
 }
-EXPORT_SYMBOL(arch_phys_wc_add);
+EXPORT_SYMBOL_GPL(arch_phys_wc_add);
 
 /*
  * arch_phys_wc_del - undoes arch_phys_wc_add
@@ -67,7 +67,7 @@ void arch_phys_wc_del(int handle)
                mtrr_del(handle - MTRR_TO_PHYS_WC_OFFSET, 0, 0);
        }
 }
-EXPORT_SYMBOL(arch_phys_wc_del);
+EXPORT_SYMBOL_GPL(arch_phys_wc_del);
 
 /*
  * phys_wc_to_mtrr_index - translates arch_phys_wc_add's return value
index b1459f1e4eba323a88c595f8c6abf0359b01fb7a..b3597ea1fd658ae52fbd7f7f25b60f1ebccbf4b9 100644 (file)
@@ -79,7 +79,7 @@ void __sg_free_table(struct sg_table *table, unsigned int max_ents,
 
        table->sgl = NULL;
 }
-EXPORT_SYMBOL(__sg_free_table);
+EXPORT_SYMBOL_GPL(__sg_free_table);
 
 /**
  * sg_free_table - Free a previously allocated sg table
@@ -90,7 +90,7 @@ void sg_free_table(struct sg_table *table)
 {
        __sg_free_table(table, SG_MAX_SINGLE_ALLOC, sg_kfree);
 }
-EXPORT_SYMBOL(sg_free_table);
+EXPORT_SYMBOL_GPL(sg_free_table);
 
 /**
  * __sg_alloc_table - Allocate and initialize an sg table with given allocator
@@ -175,7 +175,7 @@ int __sg_alloc_table(struct sg_table *table, unsigned int nents,
 
        return 0;
 }
-EXPORT_SYMBOL(__sg_alloc_table);
+EXPORT_SYMBOL_GPL(__sg_alloc_table);
 
 /**
  * sg_alloc_table - Allocate and initialize an sg table
@@ -199,7 +199,7 @@ int sg_alloc_table(struct sg_table *table, unsigned int nents, gfp_t gfp_mask)
 
        return ret;
 }
-EXPORT_SYMBOL(sg_alloc_table);
+EXPORT_SYMBOL_GPL(sg_alloc_table);
 
 
 /*
index f80058ae4418969ae2873605705aae328051f012..c7c457f290f2114c458ae9a6d5554c794ee486f9 100644 (file)
@@ -18,7 +18,7 @@
 #include <net/compat.h>
 
 const char hex_asc[] = "0123456789abcdef";
-EXPORT_SYMBOL(hex_asc);
+EXPORT_SYMBOL_GPL(hex_asc);
 
 /* 2.6.24 does not have the struct kobject with a name */
 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,25))
index cc85b1505178da0197f921cfe4094bc737ae54f5..ab5423c8713d920b0b4af9b6789f9f28b398af08 100644 (file)
@@ -381,6 +381,6 @@ int netif_set_real_num_rx_queues(struct net_device *dev, unsigned int rxq)
        dev->num_rx_queues = rxq;
        return 0;
 }
-EXPORT_SYMBOL(netif_set_real_num_rx_queues);
+EXPORT_SYMBOL_GPL(netif_set_real_num_rx_queues);
 #endif
 #endif
index 05954d451fa8a5eec8f34834a040d69c4241228a..53991eeaf5f1296a6389187d00797e2898132895 100644 (file)
@@ -45,7 +45,7 @@ int __i2c_transfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
 
        return ret;
 }
-EXPORT_SYMBOL(__i2c_transfer);
+EXPORT_SYMBOL_GPL(__i2c_transfer);
 #endif
 
 /**
index 28843239be8950b8e31c05fb5d820cec6c1711b0..b63382df531025044f06f9c6917094a8d87cddba 100644 (file)
@@ -417,4 +417,4 @@ int vm_iomap_memory(struct vm_area_struct *vma, phys_addr_t start, unsigned long
        /* Ok, let it rip */
        return io_remap_pfn_range(vma, vma->vm_start, pfn, vm_len, vma->vm_page_prot);
 }
-EXPORT_SYMBOL(vm_iomap_memory);
+EXPORT_SYMBOL_GPL(vm_iomap_memory);