diff options
| author | Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> | 2013-05-15 10:26:50 -0400 | 
|---|---|---|
| committer | Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> | 2013-05-15 10:26:50 -0400 | 
| commit | 12e04ffcd93b25dfd726d46338c2ee7d23de556e (patch) | |
| tree | f91479a62805619168994fd3ee55e3ffa23fc24e /kernel/tracepoint.c | |
| parent | 9eff37a8713939f218ab8bf0dc93f1d67af7b8b4 (diff) | |
| parent | f722406faae2d073cc1d01063d1123c35425939e (diff) | |
Merge tag 'v3.10-rc1' into stable/for-linus-3.10
Linux 3.10-rc1
* tag 'v3.10-rc1': (12273 commits)
  Linux 3.10-rc1
  [SCSI] qla2xxx: Update firmware link in Kconfig file.
  [SCSI] iscsi class, qla4xxx: fix sess/conn refcounting when find fns are used
  [SCSI] sas: unify the pointlessly separated enums sas_dev_type and sas_device_type
  [SCSI] pm80xx: thermal, sas controller config and error handling update
  [SCSI] pm80xx: NCQ error handling changes
  [SCSI] pm80xx: WWN Modification for PM8081/88/89 controllers
  [SCSI] pm80xx: Changed module name and debug messages update
  [SCSI] pm80xx: Firmware flash memory free fix, with addition of new memory region for it
  [SCSI] pm80xx: SPC new firmware changes for device id 0x8081 alone
  [SCSI] pm80xx: Added SPCv/ve specific hardware functionalities and relevant changes in common files
  [SCSI] pm80xx: MSI-X implementation for using 64 interrupts
  [SCSI] pm80xx: Updated common functions common for SPC and SPCv/ve
  [SCSI] pm80xx: Multiple inbound/outbound queue configuration
  [SCSI] pm80xx: Added SPCv/ve specific ids, variables and modify for SPC
  [SCSI] lpfc: fix up Kconfig dependencies
  [SCSI] Handle MLQUEUE busy response in scsi_send_eh_cmnd
  dm cache: set config value
  dm cache: move config fns
  dm thin: generate event when metadata threshold passed
  ...
Diffstat (limited to 'kernel/tracepoint.c')
| -rw-r--r-- | kernel/tracepoint.c | 21 | 
1 files changed, 13 insertions, 8 deletions
| diff --git a/kernel/tracepoint.c b/kernel/tracepoint.c index 0c05a459204..29f26540e9c 100644 --- a/kernel/tracepoint.c +++ b/kernel/tracepoint.c @@ -112,7 +112,8 @@ tracepoint_entry_add_probe(struct tracepoint_entry *entry,  	int nr_probes = 0;  	struct tracepoint_func *old, *new; -	WARN_ON(!probe); +	if (WARN_ON(!probe)) +		return ERR_PTR(-EINVAL);  	debug_print_probes(entry);  	old = entry->funcs; @@ -152,13 +153,18 @@ tracepoint_entry_remove_probe(struct tracepoint_entry *entry,  	debug_print_probes(entry);  	/* (N -> M), (N > 1, M >= 0) probes */ -	for (nr_probes = 0; old[nr_probes].func; nr_probes++) { -		if (!probe || -		    (old[nr_probes].func == probe && -		     old[nr_probes].data == data)) -			nr_del++; +	if (probe) { +		for (nr_probes = 0; old[nr_probes].func; nr_probes++) { +			if (old[nr_probes].func == probe && +			     old[nr_probes].data == data) +				nr_del++; +		}  	} +	/* +	 * If probe is NULL, then nr_probes = nr_del = 0, and then the +	 * entire entry will be removed. +	 */  	if (nr_probes - nr_del == 0) {  		/* N -> 0, (N > 1) */  		entry->funcs = NULL; @@ -173,8 +179,7 @@ tracepoint_entry_remove_probe(struct tracepoint_entry *entry,  		if (new == NULL)  			return ERR_PTR(-ENOMEM);  		for (i = 0; old[i].func; i++) -			if (probe && -			    (old[i].func != probe || old[i].data != data)) +			if (old[i].func != probe || old[i].data != data)  				new[j++] = old[i];  		new[nr_probes - nr_del].func = NULL;  		entry->refcount = nr_probes - nr_del; | 
