Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: Linux: Kernel

[PATCH] USB: mark USB drivers as being GPL only

 

 

First page Previous page 1 2 3 4 5 6 7 Next page Last page  View All Linux kernel RSS feed   Index | Next | Previous | View Threaded


greg at kroah

Jan 25, 2008, 10:02 AM

Post #1 of 157 (23452 views)
Permalink
[PATCH] USB: mark USB drivers as being GPL only

FYI, this is a patch that will be sent out in the next round to Linus
for inclusion in 2.6.25.

If anyone has any objections about it, please let me know.

thanks,

greg k-h

--------

From: Greg Kroah-Hartman <gregkh [at] suse>
Subject: USB: mark USB drivers as being GPL only

Over two years ago, the Linux USB developers stated that they believed
there was no way to create a USB kernel driver that was not under the
GPL. This patch moves the USB apis to enforce that decision.

There are no known closed source USB drivers in the wild, so this patch
should cause no problems.

Signed-off-by: Greg Kroah-Hartman <gregkh [at] suse>

---
Documentation/feature-removal-schedule.txt | 16 -------
drivers/usb/core/driver.c | 10 ++--
drivers/usb/core/file.c | 4 -
drivers/usb/core/hcd-pci.c | 10 ++--
drivers/usb/core/hcd.c | 18 ++++----
drivers/usb/core/hub.c | 5 +-
drivers/usb/core/message.c | 32 +++++---------
drivers/usb/core/urb.c | 15 +++----
drivers/usb/core/usb.c | 62 ++++++++---------------------
9 files changed, 61 insertions(+), 111 deletions(-)

--- a/Documentation/feature-removal-schedule.txt
+++ b/Documentation/feature-removal-schedule.txt
@@ -156,22 +156,6 @@ Who: Arjan van de Ven <arjan [at] linux

---------------------------

-What: USB driver API moves to EXPORT_SYMBOL_GPL
-When: February 2008
-Files: include/linux/usb.h, drivers/usb/core/driver.c
-Why: The USB subsystem has changed a lot over time, and it has been
- possible to create userspace USB drivers using usbfs/libusb/gadgetfs
- that operate as fast as the USB bus allows. Because of this, the USB
- subsystem will not be allowing closed source kernel drivers to
- register with it, after this grace period is over. If anyone needs
- any help in converting their closed source drivers over to use the
- userspace filesystems, please contact the
- linux-usb-devel [at] lists mailing list, and the developers
- there will be glad to help you out.
-Who: Greg Kroah-Hartman <gregkh [at] suse>
-
----------------------------
-
What: vm_ops.nopage
When: Soon, provided in-kernel callers have been converted
Why: This interface is replaced by vm_ops.fault, but it has been around
--- a/drivers/usb/core/driver.c
+++ b/drivers/usb/core/driver.c
@@ -325,7 +325,7 @@ int usb_driver_claim_interface(struct us

return retval;
}
-EXPORT_SYMBOL(usb_driver_claim_interface);
+EXPORT_SYMBOL_GPL(usb_driver_claim_interface);

/**
* usb_driver_release_interface - unbind a driver from an interface
@@ -370,7 +370,7 @@ void usb_driver_release_interface(struct
iface->needs_remote_wakeup = 0;
usb_pm_unlock(udev);
}
-EXPORT_SYMBOL(usb_driver_release_interface);
+EXPORT_SYMBOL_GPL(usb_driver_release_interface);

/* returns 0 if no match, 1 if match */
int usb_match_device(struct usb_device *dev, const struct usb_device_id *id)
@@ -542,7 +542,7 @@ const struct usb_device_id *usb_match_id

return NULL;
}
-EXPORT_SYMBOL_GPL_FUTURE(usb_match_id);
+EXPORT_SYMBOL_GPL(usb_match_id);

static int usb_device_match(struct device *dev, struct device_driver *drv)
{
@@ -745,7 +745,7 @@ int usb_register_driver(struct usb_drive

return retval;
}
-EXPORT_SYMBOL_GPL_FUTURE(usb_register_driver);
+EXPORT_SYMBOL_GPL(usb_register_driver);

/**
* usb_deregister - unregister a USB interface driver
@@ -769,7 +769,7 @@ void usb_deregister(struct usb_driver *d

usbfs_update_special();
}
-EXPORT_SYMBOL_GPL_FUTURE(usb_deregister);
+EXPORT_SYMBOL_GPL(usb_deregister);

#ifdef CONFIG_PM

--- a/drivers/usb/core/file.c
+++ b/drivers/usb/core/file.c
@@ -204,7 +204,7 @@ int usb_register_dev(struct usb_interfac
exit:
return retval;
}
-EXPORT_SYMBOL(usb_register_dev);
+EXPORT_SYMBOL_GPL(usb_register_dev);

/**
* usb_deregister_dev - deregister a USB device's dynamic minor.
@@ -245,4 +245,4 @@ void usb_deregister_dev(struct usb_inter
intf->minor = -1;
destroy_usb_class();
}
-EXPORT_SYMBOL(usb_deregister_dev);
+EXPORT_SYMBOL_GPL(usb_deregister_dev);
--- a/drivers/usb/core/hcd-pci.c
+++ b/drivers/usb/core/hcd-pci.c
@@ -144,7 +144,7 @@ int usb_hcd_pci_probe (struct pci_dev *d
dev_err (&dev->dev, "init %s fail, %d\n", pci_name(dev), retval);
return retval;
}
-EXPORT_SYMBOL (usb_hcd_pci_probe);
+EXPORT_SYMBOL_GPL(usb_hcd_pci_probe);


/* may be called without controller electrically present */
@@ -179,7 +179,7 @@ void usb_hcd_pci_remove (struct pci_dev
usb_put_hcd (hcd);
pci_disable_device(dev);
}
-EXPORT_SYMBOL (usb_hcd_pci_remove);
+EXPORT_SYMBOL_GPL(usb_hcd_pci_remove);


#ifdef CONFIG_PM
@@ -314,7 +314,7 @@ done:

return retval;
}
-EXPORT_SYMBOL (usb_hcd_pci_suspend);
+EXPORT_SYMBOL_GPL(usb_hcd_pci_suspend);

/**
* usb_hcd_pci_resume - power management resume of a PCI-based HCD
@@ -416,7 +416,7 @@ int usb_hcd_pci_resume (struct pci_dev *

return retval;
}
-EXPORT_SYMBOL (usb_hcd_pci_resume);
+EXPORT_SYMBOL_GPL(usb_hcd_pci_resume);

#endif /* CONFIG_PM */

@@ -435,5 +435,5 @@ void usb_hcd_pci_shutdown (struct pci_de
if (hcd->driver->shutdown)
hcd->driver->shutdown(hcd);
}
-EXPORT_SYMBOL (usb_hcd_pci_shutdown);
+EXPORT_SYMBOL_GPL(usb_hcd_pci_shutdown);

--- a/drivers/usb/core/hcd.c
+++ b/drivers/usb/core/hcd.c
@@ -971,7 +971,7 @@ long usb_calc_bus_time (int speed, int i
return -1;
}
}
-EXPORT_SYMBOL (usb_calc_bus_time);
+EXPORT_SYMBOL_GPL(usb_calc_bus_time);


/*-------------------------------------------------------------------------*/
@@ -1427,7 +1427,7 @@ void usb_hcd_giveback_urb(struct usb_hcd
wake_up (&usb_kill_urb_queue);
usb_put_urb (urb);
}
-EXPORT_SYMBOL (usb_hcd_giveback_urb);
+EXPORT_SYMBOL_GPL(usb_hcd_giveback_urb);

/*-------------------------------------------------------------------------*/

@@ -1667,7 +1667,7 @@ int usb_bus_start_enum(struct usb_bus *b
mod_timer(&hcd->rh_timer, jiffies + msecs_to_jiffies(10));
return status;
}
-EXPORT_SYMBOL (usb_bus_start_enum);
+EXPORT_SYMBOL_GPL(usb_bus_start_enum);

#endif

@@ -1774,7 +1774,7 @@ struct usb_hcd *usb_create_hcd (const st
"USB Host Controller";
return hcd;
}
-EXPORT_SYMBOL (usb_create_hcd);
+EXPORT_SYMBOL_GPL(usb_create_hcd);

static void hcd_release (struct kref *kref)
{
@@ -1789,14 +1789,14 @@ struct usb_hcd *usb_get_hcd (struct usb_
kref_get (&hcd->kref);
return hcd;
}
-EXPORT_SYMBOL (usb_get_hcd);
+EXPORT_SYMBOL_GPL(usb_get_hcd);

void usb_put_hcd (struct usb_hcd *hcd)
{
if (hcd)
kref_put (&hcd->kref, hcd_release);
}
-EXPORT_SYMBOL (usb_put_hcd);
+EXPORT_SYMBOL_GPL(usb_put_hcd);

/**
* usb_add_hcd - finish generic HCD structure initialization and register
@@ -1922,7 +1922,7 @@ err_register_bus:
hcd_buffer_destroy(hcd);
return retval;
}
-EXPORT_SYMBOL (usb_add_hcd);
+EXPORT_SYMBOL_GPL(usb_add_hcd);

/**
* usb_remove_hcd - shutdown processing for generic HCDs
@@ -1964,7 +1964,7 @@ void usb_remove_hcd(struct usb_hcd *hcd)
usb_deregister_bus(&hcd->self);
hcd_buffer_destroy(hcd);
}
-EXPORT_SYMBOL (usb_remove_hcd);
+EXPORT_SYMBOL_GPL(usb_remove_hcd);

void
usb_hcd_platform_shutdown(struct platform_device* dev)
@@ -1974,7 +1974,7 @@ usb_hcd_platform_shutdown(struct platfor
if (hcd->driver->shutdown)
hcd->driver->shutdown(hcd);
}
-EXPORT_SYMBOL (usb_hcd_platform_shutdown);
+EXPORT_SYMBOL_GPL(usb_hcd_platform_shutdown);

/*-------------------------------------------------------------------------*/

--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -494,6 +494,7 @@ void usb_hub_tt_clear_buffer (struct usb
schedule_work (&tt->kevent);
spin_unlock_irqrestore (&tt->lock, flags);
}
+EXPORT_SYMBOL_GPL(usb_hub_tt_clear_buffer);

static void hub_power_on(struct usb_hub *hub)
{
@@ -3116,7 +3117,7 @@ re_enumerate:
hub_port_logical_disconnect(parent_hub, port1);
return -ENODEV;
}
-EXPORT_SYMBOL(usb_reset_device);
+EXPORT_SYMBOL_GPL(usb_reset_device);

/**
* usb_reset_composite_device - warn interface drivers and perform a USB port reset
@@ -3187,4 +3188,4 @@ int usb_reset_composite_device(struct us
usb_autosuspend_device(udev);
return ret;
}
-EXPORT_SYMBOL(usb_reset_composite_device);
+EXPORT_SYMBOL_GPL(usb_reset_composite_device);
--- a/drivers/usb/core/message.c
+++ b/drivers/usb/core/message.c
@@ -147,7 +147,7 @@ int usb_control_msg(struct usb_device *d

return ret;
}
-
+EXPORT_SYMBOL_GPL(usb_control_msg);

/**
* usb_interrupt_msg - Builds an interrupt urb, sends it off and waits for completion
@@ -238,6 +238,7 @@ int usb_bulk_msg(struct usb_device *usb_

return usb_start_wait_urb(urb, timeout, actual_length);
}
+EXPORT_SYMBOL_GPL(usb_bulk_msg);

/*-------------------------------------------------------------------*/

@@ -465,7 +466,7 @@ nomem:
sg_clean (io);
return -ENOMEM;
}
-
+EXPORT_SYMBOL_GPL(usb_sg_init);

/**
* usb_sg_wait - synchronously execute scatter/gather request
@@ -569,6 +570,7 @@ void usb_sg_wait (struct usb_sg_request

sg_clean (io);
}
+EXPORT_SYMBOL_GPL(usb_sg_wait);

/**
* usb_sg_cancel - stop scatter/gather i/o issued by usb_sg_wait()
@@ -604,6 +606,7 @@ void usb_sg_cancel (struct usb_sg_reques
}
spin_unlock_irqrestore (&io->lock, flags);
}
+EXPORT_SYMBOL_GPL(usb_sg_cancel);

/*-------------------------------------------------------------------*/

@@ -652,6 +655,7 @@ int usb_get_descriptor(struct usb_device
}
return result;
}
+EXPORT_SYMBOL_GPL(usb_get_descriptor);

/**
* usb_get_string - gets a string descriptor
@@ -827,6 +831,7 @@ int usb_string(struct usb_device *dev, i
kfree(tbuf);
return err;
}
+EXPORT_SYMBOL_GPL(usb_string);

/**
* usb_cache_string - read a string descriptor and cache it for later use
@@ -927,6 +932,7 @@ int usb_get_status(struct usb_device *de
kfree(status);
return ret;
}
+EXPORT_SYMBOL_GPL(usb_get_status);

/**
* usb_clear_halt - tells device to clear endpoint halt/stall condition
@@ -985,6 +991,7 @@ int usb_clear_halt(struct usb_device *de

return 0;
}
+EXPORT_SYMBOL_GPL(usb_clear_halt);

/**
* usb_disable_endpoint -- Disable an endpoint by address
@@ -1253,6 +1260,7 @@ int usb_set_interface(struct usb_device

return 0;
}
+EXPORT_SYMBOL_GPL(usb_set_interface);

/**
* usb_reset_configuration - lightweight device reset
@@ -1328,6 +1336,7 @@ int usb_reset_configuration(struct usb_d
}
return 0;
}
+EXPORT_SYMBOL_GPL(usb_reset_configuration);

static void usb_release_interface(struct device *dev)
{
@@ -1677,22 +1686,3 @@ int usb_driver_set_configuration(struct
return 0;
}
EXPORT_SYMBOL_GPL(usb_driver_set_configuration);
-
-// synchronous request completion model
-EXPORT_SYMBOL(usb_control_msg);
-EXPORT_SYMBOL(usb_bulk_msg);
-
-EXPORT_SYMBOL(usb_sg_init);
-EXPORT_SYMBOL(usb_sg_cancel);
-EXPORT_SYMBOL(usb_sg_wait);
-
-// synchronous control message convenience routines
-EXPORT_SYMBOL(usb_get_descriptor);
-EXPORT_SYMBOL(usb_get_status);
-EXPORT_SYMBOL(usb_string);
-
-// synchronous calls that also maintain usbcore state
-EXPORT_SYMBOL(usb_clear_halt);
-EXPORT_SYMBOL(usb_reset_configuration);
-EXPORT_SYMBOL(usb_set_interface);
-
--- a/drivers/usb/core/urb.c
+++ b/drivers/usb/core/urb.c
@@ -42,6 +42,7 @@ void usb_init_urb(struct urb *urb)
INIT_LIST_HEAD(&urb->anchor_list);
}
}
+EXPORT_SYMBOL_GPL(usb_init_urb);

/**
* usb_alloc_urb - creates a new urb for a USB driver to use
@@ -73,6 +74,7 @@ struct urb *usb_alloc_urb(int iso_packet
usb_init_urb(urb);
return urb;
}
+EXPORT_SYMBOL_GPL(usb_alloc_urb);

/**
* usb_free_urb - frees the memory used by a urb when all users of it are finished
@@ -89,6 +91,7 @@ void usb_free_urb(struct urb *urb)
if (urb)
kref_put(&urb->kref, urb_destroy);
}
+EXPORT_SYMBOL_GPL(usb_free_urb);

/**
* usb_get_urb - increments the reference count of the urb
@@ -106,6 +109,7 @@ struct urb * usb_get_urb(struct urb *urb
kref_get(&urb->kref);
return urb;
}
+EXPORT_SYMBOL_GPL(usb_get_urb);

/**
* usb_anchor_urb - anchors an URB while it is processed
@@ -444,6 +448,7 @@ int usb_submit_urb(struct urb *urb, gfp_

return usb_hcd_submit_urb(urb, mem_flags);
}
+EXPORT_SYMBOL_GPL(usb_submit_urb);

/*-------------------------------------------------------------------*/

@@ -514,6 +519,7 @@ int usb_unlink_urb(struct urb *urb)
return -EIDRM;
return usb_hcd_unlink_urb(urb, -ECONNRESET);
}
+EXPORT_SYMBOL_GPL(usb_unlink_urb);

/**
* usb_kill_urb - cancel a transfer request and wait for it to finish
@@ -553,6 +559,7 @@ void usb_kill_urb(struct urb *urb)
--urb->reject;
mutex_unlock(&reject_mutex);
}
+EXPORT_SYMBOL_GPL(usb_kill_urb);

/**
* usb_kill_anchored_urbs - cancel transfer requests en masse
@@ -595,11 +602,3 @@ int usb_wait_anchor_empty_timeout(struct
msecs_to_jiffies(timeout));
}
EXPORT_SYMBOL_GPL(usb_wait_anchor_empty_timeout);
-
-EXPORT_SYMBOL(usb_init_urb);
-EXPORT_SYMBOL(usb_alloc_urb);
-EXPORT_SYMBOL(usb_free_urb);
-EXPORT_SYMBOL(usb_get_urb);
-EXPORT_SYMBOL(usb_submit_urb);
-EXPORT_SYMBOL(usb_unlink_urb);
-EXPORT_SYMBOL(usb_kill_urb);
--- a/drivers/usb/core/usb.c
+++ b/drivers/usb/core/usb.c
@@ -96,6 +96,7 @@ struct usb_interface *usb_ifnum_to_if(co

return NULL;
}
+EXPORT_SYMBOL_GPL(usb_ifnum_to_if);

/**
* usb_altnum_to_altsetting - get the altsetting structure with a given
@@ -126,6 +127,7 @@ struct usb_host_interface *usb_altnum_to
}
return NULL;
}
+EXPORT_SYMBOL_GPL(usb_altnum_to_altsetting);

struct find_interface_arg {
int minor;
@@ -170,6 +172,7 @@ struct usb_interface *usb_find_interface
__find_interface);
return argb.interface;
}
+EXPORT_SYMBOL_GPL(usb_find_interface);

/**
* usb_release_dev - free a usb device structure when all users of it are finished.
@@ -369,6 +372,7 @@ struct usb_device *usb_get_dev(struct us
get_device(&dev->dev);
return dev;
}
+EXPORT_SYMBOL_GPL(usb_get_dev);

/**
* usb_put_dev - release a use of the usb device structure
@@ -382,6 +386,7 @@ void usb_put_dev(struct usb_device *dev)
if (dev)
put_device(&dev->dev);
}
+EXPORT_SYMBOL_GPL(usb_put_dev);

/**
* usb_get_intf - increments the reference count of the usb interface structure
@@ -402,6 +407,7 @@ struct usb_interface *usb_get_intf(struc
get_device(&intf->dev);
return intf;
}
+EXPORT_SYMBOL_GPL(usb_get_intf);

/**
* usb_put_intf - release a use of the usb interface structure
@@ -416,7 +422,7 @@ void usb_put_intf(struct usb_interface *
if (intf)
put_device(&intf->dev);
}
-
+EXPORT_SYMBOL_GPL(usb_put_intf);

/* USB device locking
*
@@ -489,7 +495,7 @@ int usb_lock_device_for_reset(struct usb
}
return 1;
}
-
+EXPORT_SYMBOL_GPL(usb_lock_device_for_reset);

static struct usb_device *match_device(struct usb_device *dev,
u16 vendor_id, u16 product_id)
@@ -578,6 +584,7 @@ int usb_get_current_frame_number(struct
{
return usb_hcd_get_frame_number(dev);
}
+EXPORT_SYMBOL_GPL(usb_get_current_frame_number);

/*-------------------------------------------------------------------*/
/*
@@ -612,6 +619,7 @@ int __usb_get_extra_descriptor(char *buf
}
return -1;
}
+EXPORT_SYMBOL_GPL(__usb_get_extra_descriptor);

/**
* usb_buffer_alloc - allocate dma-consistent buffer for URB_NO_xxx_DMA_MAP
@@ -646,6 +654,7 @@ void *usb_buffer_alloc(
return NULL;
return hcd_buffer_alloc(dev->bus, size, mem_flags, dma);
}
+EXPORT_SYMBOL_GPL(usb_buffer_alloc);

/**
* usb_buffer_free - free memory allocated with usb_buffer_alloc()
@@ -671,6 +680,7 @@ void usb_buffer_free(
return;
hcd_buffer_free(dev->bus, size, addr, dma);
}
+EXPORT_SYMBOL_GPL(usb_buffer_free);

/**
* usb_buffer_map - create DMA mapping(s) for an urb
@@ -718,6 +728,7 @@ struct urb *usb_buffer_map(struct urb *u
| URB_NO_SETUP_DMA_MAP);
return urb;
}
+EXPORT_SYMBOL_GPL(usb_buffer_map);
#endif /* 0 */

/* XXX DISABLED, no users currently. If you wish to re-enable this
@@ -755,6 +766,7 @@ void usb_buffer_dmasync(struct urb *urb)
DMA_TO_DEVICE);
}
}
+EXPORT_SYMBOL_GPL(usb_buffer_dmasync);
#endif

/**
@@ -790,6 +802,7 @@ void usb_buffer_unmap(struct urb *urb)
urb->transfer_flags &= ~(URB_NO_TRANSFER_DMA_MAP
| URB_NO_SETUP_DMA_MAP);
}
+EXPORT_SYMBOL_GPL(usb_buffer_unmap);
#endif /* 0 */

/**
@@ -834,6 +847,7 @@ int usb_buffer_map_sg(const struct usb_d
return dma_map_sg(controller, sg, nents,
is_in ? DMA_FROM_DEVICE : DMA_TO_DEVICE);
}
+EXPORT_SYMBOL_GPL(usb_buffer_map_sg);

/* XXX DISABLED, no users currently. If you wish to re-enable this
* XXX please determine whether the sync is to transfer ownership of
@@ -867,6 +881,7 @@ void usb_buffer_dmasync_sg(const struct
dma_sync_sg(controller, sg, n_hw_ents,
is_in ? DMA_FROM_DEVICE : DMA_TO_DEVICE);
}
+EXPORT_SYMBOL_GPL(usb_buffer_dmasync_sg);
#endif

/**
@@ -893,6 +908,7 @@ void usb_buffer_unmap_sg(const struct us
dma_unmap_sg(controller, sg, n_hw_ents,
is_in ? DMA_FROM_DEVICE : DMA_TO_DEVICE);
}
+EXPORT_SYMBOL_GPL(usb_buffer_unmap_sg);

/* format to disable USB on kernel command line is: nousb */
__module_param_call("", nousb, param_set_bool, param_get_bool, &nousb, 0444);
@@ -904,6 +920,7 @@ int usb_disabled(void)
{
return nousb;
}
+EXPORT_SYMBOL_GPL(usb_disabled);

/*
* Init
@@ -985,45 +1002,4 @@ static void __exit usb_exit(void)

subsys_initcall(usb_init);
module_exit(usb_exit);
-
-/*
- * USB may be built into the kernel or be built as modules.
- * These symbols are exported for device (or host controller)
- * driver modules to use.
- */
-
-EXPORT_SYMBOL(usb_disabled);
-
-EXPORT_SYMBOL_GPL(usb_get_intf);
-EXPORT_SYMBOL_GPL(usb_put_intf);
-
-EXPORT_SYMBOL(usb_put_dev);
-EXPORT_SYMBOL(usb_get_dev);
-EXPORT_SYMBOL(usb_hub_tt_clear_buffer);
-
-EXPORT_SYMBOL(usb_lock_device_for_reset);
-
-EXPORT_SYMBOL(usb_find_interface);
-EXPORT_SYMBOL(usb_ifnum_to_if);
-EXPORT_SYMBOL(usb_altnum_to_altsetting);
-
-EXPORT_SYMBOL(__usb_get_extra_descriptor);
-
-EXPORT_SYMBOL(usb_get_current_frame_number);
-
-EXPORT_SYMBOL(usb_buffer_alloc);
-EXPORT_SYMBOL(usb_buffer_free);
-
-#if 0
-EXPORT_SYMBOL(usb_buffer_map);
-EXPORT_SYMBOL(usb_buffer_dmasync);
-EXPORT_SYMBOL(usb_buffer_unmap);
-#endif
-
-EXPORT_SYMBOL(usb_buffer_map_sg);
-#if 0
-EXPORT_SYMBOL(usb_buffer_dmasync_sg);
-#endif
-EXPORT_SYMBOL(usb_buffer_unmap_sg);
-
MODULE_LICENSE("GPL");
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/


clemens at ladisch

Jan 28, 2008, 12:13 AM

Post #2 of 157 (22662 views)
Permalink
Re: [PATCH] USB: mark USB drivers as being GPL only [In reply to]

Greg KH wrote:
> Over two years ago, the Linux USB developers stated that they believed
> there was no way to create a USB kernel driver that was not under the
> GPL. This patch moves the USB apis to enforce that decision.
>
> There are no known closed source USB drivers in the wild, so this patch
> should cause no problems.

There are the commercial OpenSound drivers.


Regards,
Clemens
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/


greg at kroah

Jan 28, 2008, 12:57 AM

Post #3 of 157 (22649 views)
Permalink
Re: [PATCH] USB: mark USB drivers as being GPL only [In reply to]

On Mon, Jan 28, 2008 at 09:13:16AM +0100, Clemens Ladisch wrote:
> Greg KH wrote:
> > Over two years ago, the Linux USB developers stated that they believed
> > there was no way to create a USB kernel driver that was not under the
> > GPL. This patch moves the USB apis to enforce that decision.
> >
> > There are no known closed source USB drivers in the wild, so this patch
> > should cause no problems.
>
> There are the commercial OpenSound drivers.

What are they? Do you have a link to them? And why have I not heard
from any user of them for the past two years (we have had a kernel
warning for over 2 years for this issue.)

thanks,

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/


clemens at ladisch

Jan 28, 2008, 1:58 AM

Post #4 of 157 (22652 views)
Permalink
Re: [PATCH] USB: mark USB drivers as being GPL only [In reply to]

Greg KH wrote:
> On Mon, Jan 28, 2008 at 09:13:16AM +0100, Clemens Ladisch wrote:
>> Greg KH wrote:
>> > Over two years ago, the Linux USB developers stated that they believed
>> > there was no way to create a USB kernel driver that was not under the
>> > GPL. This patch moves the USB apis to enforce that decision.
>> >
>> > There are no known closed source USB drivers in the wild, so this patch
>> > should cause no problems.
>>
>> There are the commercial OpenSound drivers.
>
> What are they? Do you have a link to them?

http://www.opensound.com/

> And why have I not heard from any user of them for the past two years
> (we have had a kernel warning for over 2 years for this issue.)

They aren't used widely (with Linux), and AFAIK the USB driver doesn't
have anything to favor it over the ALSA driver.


As far as my (biased) opinion is of interest, I'm not objecting against
your patch.


Regards,
Clemens
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/


bharrosh at panasas

Jan 28, 2008, 2:44 AM

Post #5 of 157 (22652 views)
Permalink
Re: [PATCH] USB: mark USB drivers as being GPL only [In reply to]

On Fri, Jan 25 2008 at 20:02 +0200, Greg KH <greg [at] kroah> wrote:
> FYI, this is a patch that will be sent out in the next round to Linus
> for inclusion in 2.6.25.
>
> If anyone has any objections about it, please let me know.
>
> thanks,
>
> greg k-h
>


What about ndiswrapper and its windows binaries
are they covered through ndiswrapper by GPL?
(Unfortunately I use them, but less and less)

Boaz
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/


greg at kroah

Jan 28, 2008, 8:13 AM

Post #6 of 157 (22671 views)
Permalink
Re: [PATCH] USB: mark USB drivers as being GPL only [In reply to]

On Mon, Jan 28, 2008 at 12:44:19PM +0200, Boaz Harrosh wrote:
> On Fri, Jan 25 2008 at 20:02 +0200, Greg KH <greg [at] kroah> wrote:
> > FYI, this is a patch that will be sent out in the next round to Linus
> > for inclusion in 2.6.25.
> >
> > If anyone has any objections about it, please let me know.
>
> What about ndiswrapper and its windows binaries
> are they covered through ndiswrapper by GPL?
> (Unfortunately I use them, but less and less)

Sorry, but no, they are not going to work, due to the way that
ndiswrapper is marked by the kernel module loader.

Again, you should be getting a kernel warning every time you try to use
a USB function today.

What USB drivers for wireless devices are not yet supported by Linux
becides the Marvell-based ones (which some of us are actively working
on...)?

thanks,

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/


greg at kroah

Jan 28, 2008, 8:13 AM

Post #7 of 157 (22643 views)
Permalink
Re: [PATCH] USB: mark USB drivers as being GPL only [In reply to]

On Mon, Jan 28, 2008 at 10:58:55AM +0100, Clemens Ladisch wrote:
> Greg KH wrote:
> > On Mon, Jan 28, 2008 at 09:13:16AM +0100, Clemens Ladisch wrote:
> >> Greg KH wrote:
> >> > Over two years ago, the Linux USB developers stated that they believed
> >> > there was no way to create a USB kernel driver that was not under the
> >> > GPL. This patch moves the USB apis to enforce that decision.
> >> >
> >> > There are no known closed source USB drivers in the wild, so this patch
> >> > should cause no problems.
> >>
> >> There are the commercial OpenSound drivers.
> >
> > What are they? Do you have a link to them?
>
> http://www.opensound.com/
>
> > And why have I not heard from any user of them for the past two years
> > (we have had a kernel warning for over 2 years for this issue.)
>
> They aren't used widely (with Linux), and AFAIK the USB driver doesn't
> have anything to favor it over the ALSA driver.

Ok, then we don't have any issues :)

thanks,

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/


bharrosh at panasas

Jan 28, 2008, 8:44 AM

Post #8 of 157 (22652 views)
Permalink
Re: [PATCH] USB: mark USB drivers as being GPL only [In reply to]

On Mon, Jan 28 2008 at 18:13 +0200, Greg KH <greg [at] kroah> wrote:
> On Mon, Jan 28, 2008 at 12:44:19PM +0200, Boaz Harrosh wrote:
>> On Fri, Jan 25 2008 at 20:02 +0200, Greg KH <greg [at] kroah> wrote:
>>> FYI, this is a patch that will be sent out in the next round to Linus
>>> for inclusion in 2.6.25.
>>>
>>> If anyone has any objections about it, please let me know.
>> What about ndiswrapper and its windows binaries
>> are they covered through ndiswrapper by GPL?
>> (Unfortunately I use them, but less and less)
>
> Sorry, but no, they are not going to work, due to the way that
> ndiswrapper is marked by the kernel module loader.
>
I was afraid of that, yes.

> Again, you should be getting a kernel warning every time you try to use
> a USB function today.
>
sigh, yes I do, but it's better then no networking.

> What USB drivers for wireless devices are not yet supported by Linux
> becides the Marvell-based ones (which some of us are actively working
> on...)?
>
I'm not even sure, its an old vaio pII 512MZ. Still works like a charm
with Linux. I use a chokoloku usb dangle that I dismantled and assembled
inside the laptop case. I use the original windows drivers that came with
it.

Last time I checked with 2.6.20 it did not work, but I should now try
2.6.24 as I know things have advanced a lot. (It works and I'm just lazy)

> thanks,
>
> greg k-h

Thank you, I do support what you are doing here. Just the ndiswrapper
is a special case. But I guess I, as a user, can always use it anyway,
right? But not the commercial distros. Don't stop the transition on my
account.

Boaz
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/


greg at kroah

Jan 28, 2008, 8:52 AM

Post #9 of 157 (22650 views)
Permalink
Re: [PATCH] USB: mark USB drivers as being GPL only [In reply to]

On Mon, Jan 28, 2008 at 06:44:14PM +0200, Boaz Harrosh wrote:
> Thank you, I do support what you are doing here. Just the ndiswrapper
> is a special case. But I guess I, as a user, can always use it anyway,
> right? But not the commercial distros. Don't stop the transition on my
> account.

Yes, as a user, you are free to do whatever you want with the source
code :)

thanks,

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/


tconnors at astro

Jan 28, 2008, 1:49 PM

Post #10 of 157 (22649 views)
Permalink
Re: [PATCH] USB: mark USB drivers as being GPL only [In reply to]

Greg KH <greg [at] kroah> said on Fri, 25 Jan 2008 10:02:32 -0800:
> FYI, this is a patch that will be sent out in the next round to Linus
> for inclusion in 2.6.25.
>
> If anyone has any objections about it, please let me know.
>
> thanks,
>
> greg k-h
>
> --------
>
> From: Greg Kroah-Hartman <gregkh [at] suse>
> Subject: USB: mark USB drivers as being GPL only
>
> Over two years ago, the Linux USB developers stated that they believed
> there was no way to create a USB kernel driver that was not under the
> GPL. This patch moves the USB apis to enforce that decision.
>
> There are no known closed source USB drivers in the wild, so this patch
> should cause no problems.

The near paperweight of Avermedia A828 Hybrid FM Volar nevertheless
works with their closed module[1] at least as a digital tuner and a
pretty crap FM tuner, despite the warning in syslog that it will no
longer work in short order. Yes, I was suckered in by their claim
that "it works under Linux", wasn't I?

I would have thought it would be fairly easy to write open drivers for
it, given that it has pretty standard chips:
Cypress FX2, WM8739, Conexant CX2584x, Xceive XC3028 and Zarlink MT352




[1] http://www.avermedia.com/EN/default.aspx?TYPE=test.htm&PT=downloadD1&tv_TCAT_POS=0&CATNO0=D&IDX=2.1&CNT=1&CATNO1=D2&PID=471071067-1556&UCN=BAB4C
http://www.avermedia.com/images/www.avermedia.com_EN/A828_LinuxDrv_v0.07_x86Beta.zip
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/


g.esp at free

Feb 1, 2008, 6:45 AM

Post #11 of 157 (22668 views)
Permalink
RE: [PATCH] USB: mark USB drivers as being GPL only [In reply to]

>FYI, this is a patch that will be sent out in the next round to Linus
>for inclusion in 2.6.25.
>
>If anyone has any objections about it, please let me know.
>
..
> There are no known closed source USB drivers in the wild, so this
> patch should cause no problems.

There is the unicorn usb adsl modem driver (STM unicorn chip).
http://www.bewan.com/bewan/drivers/A1012-A1006-A904-A888-A983-0.9.3.tgz
There is some sources and a binary blob to be linked.

The only things I know from the binary blob is that sources should be 150 000
lines of C++.

Driver compile with gcc-3 but not with gcc-4 (because of the binary blob).

Gilles
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/


gregkh at suse

Feb 1, 2008, 9:29 AM

Post #12 of 157 (22638 views)
Permalink
Re: [PATCH] USB: mark USB drivers as being GPL only [In reply to]

On Fri, Feb 01, 2008 at 03:45:07PM +0100, Gilles Espinasse wrote:
> >FYI, this is a patch that will be sent out in the next round to Linus
> >for inclusion in 2.6.25.
> >
> >If anyone has any objections about it, please let me know.
> >
> ..
> > There are no known closed source USB drivers in the wild, so this
> > patch should cause no problems.
>
> There is the unicorn usb adsl modem driver (STM unicorn chip).
> http://www.bewan.com/bewan/drivers/A1012-A1006-A904-A888-A983-0.9.3.tgz
> There is some sources and a binary blob to be linked.
>
> The only things I know from the binary blob is that sources should be 150 000
> lines of C++.

Wow, larger than all the in-kernel USB drivers, and the USB core
combined. That's an impressive display of horrible code :)

> Driver compile with gcc-3 but not with gcc-4 (because of the binary blob).

So they aren't even being used by modern distros, so there's not much to
worry about here...

thanks for the info.

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/


christer at weinigel

Feb 2, 2008, 3:37 AM

Post #13 of 157 (22648 views)
Permalink
Re: [PATCH] USB: mark USB drivers as being GPL only [In reply to]

On Fri, 25 Jan 2008 10:02:32 -0800
Greg KH <greg [at] kroah> wrote:

> FYI, this is a patch that will be sent out in the next round to Linus
> for inclusion in 2.6.25.
>
> If anyone has any objections about it, please let me know.

Yes, I have objections and I've told you before.

> Over two years ago, the Linux USB developers stated that they believed
> there was no way to create a USB kernel driver that was not under the
> GPL. This patch moves the USB apis to enforce that decision.
>
> There are no known closed source USB drivers in the wild, so this
> patch should cause no problems.

This is a bit disingenuous. Of course there are closed source USB
drivers out there. I've written multiple of them during my life as a
consultant. The nature of closed source drivers is that they quite
often are written for custom hardware that isn't used by that many
people, so you have probably not seen them, but they are definitely out
there in the wild.

For some of these drivers, being in kernel space is very important
since they transfer large amounts of data with very tight latency
requirements. It may, in theory, be possible to do the same thing in
userspace with multiple cooperative threads and libusb, but it would be
much more complex and much more error prone (it's hard to do control
loops where you need about 40 us turnaround time).

Yes, I'd much prefer if all companies would just publish their sources
as GPL, but some companies, rightly or nor, believe that they expose too
much information about their custom hardware if they do. And I do feel
that such a rabid GPL-stance is going to alienate those companies. Most
of those companies also select one kernel for their custom hardware and
use that kernel for a long time, so for them this feature removal will
come as a bit of a surprise.

/Christer
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/


greg at kroah

Feb 2, 2008, 11:19 AM

Post #14 of 157 (22644 views)
Permalink
Re: [PATCH] USB: mark USB drivers as being GPL only [In reply to]

On Sat, Feb 02, 2008 at 12:37:10PM +0100, Christer Weinigel wrote:
> On Fri, 25 Jan 2008 10:02:32 -0800
> Greg KH <greg [at] kroah> wrote:
>
> > FYI, this is a patch that will be sent out in the next round to Linus
> > for inclusion in 2.6.25.
> >
> > If anyone has any objections about it, please let me know.
>
> Yes, I have objections and I've told you before.

You sent one message on this topic to me, back in Feb of 2007,
disagreeing that you could write a userspace USB driver running at full
speed in a non-racey manner.

Unfortunately, many other userspace USB drivers seem to disprove your
statement, including a number of vision systems running in military
applications (tanks running Linux!). Perhaps this is just a matter of
using the api properly :)

I do know that the current usbfs interface is a major pain, hence the
work to create usbfs2. I know those developers could use the help in
getting that cleaned up and into the kernel tree.

Also see the rapid development these days in wrappers around usbfs.
There is competing projects right now with OpenUSB and the
revitalization of the old libusb project. I know those developers are
looking for examples where their new frameworks do not meet the needs of
developers for stuff exactly like you describe (lots of threads, async
callbacks, high throughput, cross-platform portability, etc.)

> > Over two years ago, the Linux USB developers stated that they believed
> > there was no way to create a USB kernel driver that was not under the
> > GPL. This patch moves the USB apis to enforce that decision.
> >
> > There are no known closed source USB drivers in the wild, so this
> > patch should cause no problems.
>
> This is a bit disingenuous. Of course there are closed source USB
> drivers out there.

Again, I have asked for examples, and only received 2. One (sound
driver) is totally not needed at all, as the kernel provides that
capability, and the other hasn't run in a modern distro for years.

> I've written multiple of them during my life as a consultant. The
> nature of closed source drivers is that they quite often are written
> for custom hardware that isn't used by that many people, so you have
> probably not seen them, but they are definitely out there in the wild.

It comes down to the simple fact, if you wish to use Linux, abide by the
license it comes under. To do otherwise is both disenginous and
illegal[1].

> For some of these drivers, being in kernel space is very important
> since they transfer large amounts of data with very tight latency
> requirements. It may, in theory, be possible to do the same thing in
> userspace with multiple cooperative threads and libusb, but it would be
> much more complex and much more error prone (it's hard to do control
> loops where you need about 40 us turnaround time).

See statement above about vision systems in tanks, it can, and is done
all the time...

If a company wants to keep a driver closed, then use another operating
system, it's not like there isn't other options out there. I hear the
BSDs and Microsoft are quite comfortable with things like that. :)

thanks,

greg k-h

[1] This is the public position of my personal lawyers, my employer's
lawyers, and a number of other companies whom hold copyright on the
Linux kernel tree. So it's not like this is a minority decision these
days...
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/


g.esp at free

Feb 3, 2008, 3:17 AM

Post #15 of 157 (22641 views)
Permalink
Re: [PATCH] USB: mark USB drivers as being GPL only [In reply to]

> Again, I have asked for examples, and only received 2. One (sound
> driver) is totally not needed at all, as the kernel provides that
> capability, and the other hasn't run in a modern distro for years.
>

I would consider you are a bit fast to state that :

a7n8x-e:~# gcc -dumpversion
3.3.6
a7n8x-e:~# cat /etc/issue
Debian GNU/Linux 4.0 \n \l

So unicorn driver could still be compiled on the current stable Debian that
has been released in April 2007.

Gilles

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/


christer at weinigel

Feb 3, 2008, 3:48 AM

Post #16 of 157 (22651 views)
Permalink
Re: [PATCH] USB: mark USB drivers as being GPL only [In reply to]

On Sat, 2 Feb 2008 11:19:30 -0800
Greg KH <greg [at] kroah> wrote:

>I do know that the current usbfs interface is a major pain, hence the
>work to create usbfs2. I know those developers could use the help in
>getting that cleaned up and into the kernel tree.

>Also see the rapid development these days in wrappers around usbfs.
>There is competing projects right now with OpenUSB and the
>revitalization of the old libusb project. I know those developers are
>looking for examples where their new frameworks do not meet the needs of
>developers for stuff exactly like you describe (lots of threads, async
>callbacks, high throughput, cross-platform portability, etc.)

Yes, I did spend quite a lot of time the last time looking for usable
USB APIs, and I did not manage to find any. Unfortunately, my time is
also limited, and I'd much prefer to work on getting support for
Samsungs ARM CPUs into Linux. When I'm doing paid work for a customer
and they want to a proprietary driver, I'm not going to spend a lot of
my free time on working around that decision. I explain to them that
binary drivers are definitely in a grey area and they might get in
trouble about it, but at the end it is their decision.

> > I've written multiple of them during my life as a consultant. The
> > nature of closed source drivers is that they quite often are written
> > for custom hardware that isn't used by that many people, so you have
> > probably not seen them, but they are definitely out there in the
> > wild.
>
> It comes down to the simple fact, if you wish to use Linux, abide by
> the license it comes under. To do otherwise is both disenginous and
> illegal[1].
>
> If a company wants to keep a driver closed, then use another operating
> system, it's not like there isn't other options out there. I hear the
> BSDs and Microsoft are quite comfortable with things like that. :)

So in other words you want to crack down on GPL violations, and you're
going to ignore anyone who does have a proprietary driver as "not
relevant" or "it can be done with usbfs" (maybe). So why even ask on
the mailing list? Just do it.

Saying "use BSD" instead isn't a good answer for me since I don't know
BSD well enough. And personally, I want to see Linux everywhere; I
think it's a lot better to have Linux + a proprietary driver in an
embedded system than BSD or Windows CE. It means that the customers
get used to Linux, and if I can get them to at least contribute back a
bit (any improvements to the core kernel for example), to me that is a
lot better than giving a lot more money to BillG.

Later, when I can show them how much easier everything gets if they use
open drivers (I'd never have managed to get my latest Samsung platform
up and running as quickly as I did without the patches I got from
Sandeep Patil, and by posting my patches to his patches I got some
feedback that helped me fix a bunch of bugs). But it usually takes
some time to convince a company that the things they get back is more
valuable than keeping things proprietary. So I think Linux as a whole
gains a lot more by being a bit lenient about proprietary drivers.
That is why I'm opposed this change of yours.

/Christer

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/


penberg at cs

Feb 3, 2008, 6:35 AM

Post #17 of 157 (22632 views)
Permalink
Re: [PATCH] USB: mark USB drivers as being GPL only [In reply to]

Hi Christer,

On Feb 3, 2008 1:48 PM, Christer Weinigel <christer [at] weinigel> wrote:
> Saying "use BSD" instead isn't a good answer for me since I don't know
> BSD well enough. And personally, I want to see Linux everywhere; I
> think it's a lot better to have Linux + a proprietary driver in an
> embedded system than BSD or Windows CE.

Why are we discussing this again? The Linux kernel is distributed
under the GPLv2 and even though there are some legal gray areas
regarding derived work (think nvidia and ati binary blobs here), the
license is not friendly towards proprietary drivers at all.
Furthermore, many of the _kernel developers_ do not support
proprietary drivers, so why do you insist on using Linux for that
purpose?

Seriously, you really really want to look at the BSDs or proprietary
operating systems because they support your needs much better.

Pekka
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/


davidn at davidnewall

Feb 3, 2008, 7:07 AM

Post #18 of 157 (22650 views)
Permalink
Re: [PATCH] USB: mark USB drivers as being GPL only [In reply to]

Greg KH wrote:
> It comes down to the simple fact, if you wish to use Linux, abide by the
> license it comes under. To do otherwise is both disenginous and
> illegal[1].

I think you're being dishonest. This isn't really about Linux and it
being licensed under GPL, is it? Not if you're being 100% honest. This
is really about Beejay's* kernel module; and you are attempting to force
her to release that under GPL. You should 'fess up, that the change is
0% technical, 0% unavoidable and 100% political. This does, of course,
disadvantage Linux with respect to many classes of devices, for example
GSM transceivers when used in those parts of the world^ where regulatory
requirements prohibit modification of power or frequency settings, which
effectively prohibits open-source driver.

An unbending bias towards GPL is impractical in many markets. It also
hands an additional point or two of market share to Microsoft; who no
doubt will be immensely grateful.

*The fictitious author of an imaginary driver.
^Probably all of the world.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/


davidn at davidnewall

Feb 3, 2008, 7:12 AM

Post #19 of 157 (22649 views)
Permalink
Re: [PATCH] USB: mark USB drivers as being GPL only [In reply to]

Greg KH wrote:
> It comes down to the simple fact, if you wish to use Linux, abide by the
> license it comes under. To do otherwise is both disenginous and
> illegal[1].
By the way, I'm almost certain that the COPYING file is the first, last
and only document specifying licence conditions, and nothing in that
prevents a proprietary driver from including a patch that, for example,
globally replaces ALL GPL-only symbols by the less restrictive ones. In
fact, you'd be in a bit of strife down under if you tried to say
otherwise. We've got quite strong consumer protection laws down here.
You're just not allowed to claim additional licence conditions based on
source code commentary.

It's just games and hot air, isn't it?
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/


penberg at cs

Feb 3, 2008, 7:43 AM

Post #20 of 157 (22633 views)
Permalink
Re: [PATCH] USB: mark USB drivers as being GPL only [In reply to]

Hi David,

On Feb 3, 2008 5:12 PM, David Newall <davidn [at] davidnewall> wrote:
> By the way, I'm almost certain that the COPYING file is the first, last
> and only document specifying licence conditions, and nothing in that
> prevents a proprietary driver from including a patch that, for example,
> globally replaces ALL GPL-only symbols by the less restrictive ones.

So I am going to assume you're not trolling here (although some of
your snarky remarks make that bit hard).

A vendor is, of course, allowed to distribute a patch (under the GPLv2
proper) that removes the license checks no doubt‚ but it doesn't
change the fact whether the actual driver they're distributing (under
a proprietary license) is derived work or not (one way or another).
And, _if_ you're distributing a derived work that is not under the
GPLv2, you're breaking the law. I think we can agree on this?

As there is some controversy over the definition of derived work
(think Linus' comments on porting a driver or a filesystem from
another operating system here), we use the EXPORT_SYMBOL_GPL
annotations as a big warning sign that what you're doing is likely to
be considered as a derived work. If the USB developers want to
annotate their code with EXPORT_SYMBOL_GPL, why the hell do you want
to argue about it? They know the code better than you and as copyright
holders they can actually sue those parties distributing proprietary
code they think is derived work.

Bringing up Linux world domination or Microsoft market share in these
kind of discussion is totally pointless. The license is what it is
(GPLv2) and it seems unlikely to change at this point. If you want to
develop for Linux, you're most certainly better off always
distributing your code under the GPLv2; otherwise you really really
want to consult an IP lawyer to be sure. But what I don't understand
is why people insist using the Linux kernel for something it clearly
can never really properly support (proprietary code)?
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/


davidn at davidnewall

Feb 3, 2008, 8:06 AM

Post #21 of 157 (22627 views)
Permalink
Re: [PATCH] USB: mark USB drivers as being GPL only [In reply to]

Pekka Enberg wrote:
> Hi David,
>
> On Feb 3, 2008 5:12 PM, David Newall <davidn [at] davidnewall> wrote:
>
>> By the way, I'm almost certain that the COPYING file is the first, last
>> and only document specifying licence conditions, and nothing in that
>> prevents a proprietary driver from including a patch that, for example,
>> globally replaces ALL GPL-only symbols by the less restrictive ones.
>>
>
> So I am going to assume you're not trolling here (although some of
> your snarky remarks make that bit hard).
>

Thanks. I'm not trolling. Perhaps I was a bit snarky; it's an issue I
feel strongly about. (I'm sure others feel just as strongly, but
differently.)

> And, _if_ you're distributing a derived work that is not under the
> GPLv2, you're breaking the law. I think we can agree on this?
>

Agreed.

> As there is some controversy over the definition of derived work
> (think Linus' comments on porting a driver or a filesystem from
> another operating system here), we use the EXPORT_SYMBOL_GPL
> annotations as a big warning sign that what you're doing is likely to
> be considered as a derived work.
Let's consider a totally original USB driver. There are an infinite
number of them, some still to be written.


> If the USB developers want to
> annotate their code with EXPORT_SYMBOL_GPL, why the hell do you want
> to argue about it?
Have I the wrong end of the stick? Isn't that mark restricting an
interface to GPL _callers_? Isn't it a technical switch that means,
"Don't use my software if yours isn't (also) GPL"? As such it's mere
political rhetoric, devoid of any binding power.


> If you want to
> develop for Linux, you're most certainly better off always
> distributing your code under the GPLv2

I agree; but let's not disadvantage applications where regulatory
requirements prohibit GPL code, nor applications where the proprietor
simply chooses to keep the work proprietary. A proprietary module is
simply a piece of software. Many people couldn't use Linux if they
couldn't run proprietary software on it.


> But what I don't understand
> is why people insist using the Linux kernel for something it clearly
> can never really properly support (proprietary code)?
>

That's defeatist. Of course the Linux kernel can properly support
("run") proprietary code. It would be a miserable excuse for an
operating system if it couldn't.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/


penberg at cs

Feb 3, 2008, 8:48 AM

Post #22 of 157 (22640 views)
Permalink
Re: [PATCH] USB: mark USB drivers as being GPL only [In reply to]

Hi David,

On Feb 3, 2008 6:06 PM, David Newall <davidn [at] davidnewall> wrote:
> > But what I don't understand is why people insist using the Linux kernel
> > for something it clearly can never really properly support (proprietary
> > code)?
>
> That's defeatist. Of course the Linux kernel can properly support
> ("run") proprietary code. It would be a miserable excuse for an
> operating system if it couldn't.

I think you're missing my point: as long as the license stays the way
it is now, you can never distribute proprietary code unless you've
consulted a lawyer and even then you run the risk of being sued for
infringement if the copyright holder thinks what you have is derived
work. The GPLv2 and thus Linux was never designed to allow proprietary
code and arguing that is pointless, isn't it? There are much better
alternatives available and people interested in proprietary code
should be looking there.

Pekka
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/


christer at weinigel

Feb 3, 2008, 9:04 AM

Post #23 of 157 (22638 views)
Permalink
Re: [PATCH] USB: mark USB drivers as being GPL only [In reply to]

Pekka Enberg wrote:
> Why are we discussing this again? The Linux kernel is distributed
> under the GPLv2 and even though there are some legal gray areas
> regarding derived work (think nvidia and ati binary blobs here), the
> license is not friendly towards proprietary drivers at all.

Why? Because it is a gray area. I still have my reservations about the
GPL being as viral as FSF says it is. Greg KH's lawyer says one thing,
some legal departments I've talked to say something else (or they
express it in laywerese, but it boils down to "you can probably get away
with it") and apparently both nvidia's and ati's legal departmens think
so too.

And because I belive it's very important not to scare away Linux users
unneccesarily. Yes, the kernel does not, and should not be friendly
towards proprietary drivers, but there is a difference between not being
friendly and being actively hostile.

> Furthermore, many of the _kernel developers_ do not support
> proprietary drivers, so why do you insist on using Linux for that
> purpose?

You did read the rest of the mail you commented I hope?

> Seriously, you really really want to look at the BSDs or proprietary
> operating systems because they support your needs much better.

So you'd rather have the Nokia 770 use BSD because Nokia couldn't find a
low power WLAN chip with a GPLed driver? You'd rather see Nokia spend
man-years on improving the support for the TI OMAP CPU's somewhere else
than Linux? Yes, it sucks that the on WLAN Nokia 770 doesn't have an
open driver, but I'm very happy that Nokia has spent all that effort on
getting Linux to run well on the 770 and has given 99% of that work back
to the Linux community. (Actually, I think there is a GPLed driver for
the WLAN now, but that driver would most probably not have been written
unless the Nokia 770 hardware had been out there so that frustrated
Linux hackers decided to do something about it).

And why is it ok for nvidia and ati to have proprietary drivers? Is it
ok just because people are afraid to alienate them if they push too
hard? Having no 3D graphics at all on Linux is a nightmare scenario for
the distro makers, so I guess that's why people try not to rock the boat
too much. So why don't you send in a patch that makes all EXPORTS into
EXPORT_GPL? That would be the only honest course of action according to
you, wouldn't it?

/Christer
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/


marcel at holtmann

Feb 3, 2008, 9:13 AM

Post #24 of 157 (22628 views)
Permalink
Re: [PATCH] USB: mark USB drivers as being GPL only [In reply to]

Hi David,

> > As there is some controversy over the definition of derived work
> > (think Linus' comments on porting a driver or a filesystem from
> > another operating system here), we use the EXPORT_SYMBOL_GPL
> > annotations as a big warning sign that what you're doing is likely to
> > be considered as a derived work.
> Let's consider a totally original USB driver. There are an infinite
> number of them, some still to be written.

if a new drivers is originally written for Linux, then you are breaking
the GPL. There is no other way to name this. Using EXPORT_SYMBOL or
EXPORT_SYMBOL_GPL make no difference here. You driver was meant to be
running as Linux kernel module and thus it is derivative work. While
there is a gray area, but this case has always been pretty clear.

> > If the USB developers want to
> > annotate their code with EXPORT_SYMBOL_GPL, why the hell do you want
> > to argue about it?
> Have I the wrong end of the stick? Isn't that mark restricting an
> interface to GPL _callers_? Isn't it a technical switch that means,
> "Don't use my software if yours isn't (also) GPL"? As such it's mere
> political rhetoric, devoid of any binding power.

What are you arguing here. It makes no difference if it is technical or
not. The EXPORT_SYMBOL_GPL gives you a clear hint that when using this
symbol, you have to obey to the GPL. Even the EXPORT_SYMBOL is protected
by the same GPL license. And thus both has the same binding power to be
used from GPL modules only.

At this point I would strongly advise to talk to lawyer since you are
obvious missing the point here.

> > If you want to
> > develop for Linux, you're most certainly better off always
> > distributing your code under the GPLv2
>
> I agree; but let's not disadvantage applications where regulatory
> requirements prohibit GPL code, nor applications where the proprietor
> simply chooses to keep the work proprietary. A proprietary module is
> simply a piece of software. Many people couldn't use Linux if they
> couldn't run proprietary software on it.

First of all we are talking about kernel modules here. Not the
userspace. So stop this FUD.

> > But what I don't understand
> > is why people insist using the Linux kernel for something it clearly
> > can never really properly support (proprietary code)?
> >
>
> That's defeatist. Of course the Linux kernel can properly support
> ("run") proprietary code. It would be a miserable excuse for an
> operating system if it couldn't.

In userspace, yes, the kernel would "run" proprietary code fully legally
without any problem. As a kernel module, the only safe answer is no. And
in case of EXPORT_SYMBOL_GPL, it is pretty clear. You would obviously
violate the license.

Regards

Marcel


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/


greg at kroah

Feb 3, 2008, 3:15 PM

Post #25 of 157 (22638 views)
Permalink
Re: [PATCH] USB: mark USB drivers as being GPL only [In reply to]

On Sun, Feb 03, 2008 at 06:04:24PM +0100, Christer Weinigel wrote:
> Pekka Enberg wrote:
>> Why are we discussing this again? The Linux kernel is distributed
>> under the GPLv2 and even though there are some legal gray areas
>> regarding derived work (think nvidia and ati binary blobs here), the
>> license is not friendly towards proprietary drivers at all.
>
> Why? Because it is a gray area.

No, it really is not a gray area at all, especially when you are writing
a new driver for Linux. Go talk to a lawyer if you want the details.

thanks,

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

First page Previous page 1 2 3 4 5 6 7 Next page Last page  View All Linux kernel RSS feed   Index | Next | Previous | View Threaded
 
 


Interested in having your list archived? Contact Gossamer Threads
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.